forward_list::clear() y forward_list::erase_after() en C++ STL

La lista de reenvío en STL implementa una lista enlazada individualmente. Introducido desde C++ 11, la lista de reenvío es más útil que otros contenedores en las operaciones de inserción, eliminación y movimiento (como ordenar) y permite la inserción y eliminación constante de elementos en el tiempo. Se diferencia de la lista por el hecho de que la lista de reenvío realiza un seguimiento de la ubicación de solo el siguiente elemento, mientras que la lista realiza un seguimiento de los elementos siguientes y anteriores.
 

reenviar_lista::clear()

La función clear() se utiliza para eliminar todos los elementos del contenedor de la lista de reenvío, lo que hace que su tamaño sea 0. 
Sintaxis: 
 

forwardlistname.clear()
Parameters :
No parameters are passed.
Result :
All the elements of the forward list are
removed ( or destroyed )

Ejemplos: 
 

Input  : flist{1, 2, 3, 4, 5};
         flist.clear();
Output : flist{}

Input  : flist{};
         flist.clear();
Output : flist{}

Errores y Excepciones
1. No tiene garantía de lanzamiento de excepciones. 
2. Muestra error cuando se pasa un parámetro.
 

CPP

// CPP program to illustrate
// Implementation of clear() function
#include <forward_list>
#include <iostream>
using namespace std;
 
int main()
{
    forward_list<int> myflist{ 1, 2, 3, 4, 5 };
 
    myflist.clear();
    // Forward List becomes empty
 
    // Printing the Forward list
    for (auto it = myflist.begin(); it != myflist.end(); ++it)
        cout << ' ' << *it;
    return 0;
}

Producción: 
 

No Output

 Complejidad de tiempo: O(N)

Espacio Auxiliar: O(1)
 

adelante_lista::borrar_después()

La función erase-after() se usa para eliminar elementos de un contenedor al lado de la posición especificada o de un rango.
Sintaxis: 
 

1. flistname.erase_after(position)
2. flistname.erase_after(startingposition, endingposition)
Parameters :
Position previous of the element to be removed in the form of iterator.
or the range specified using start and end iterator.
Result :
Elements are removed from the next
position of the container.

Ejemplos: 
 

Input  : flist{1, 2, 3, 4, 5}, iterator= 2 i.e.,iterator is pointing to element with index 2.
         flist.erase_after(iterator);
Output : 1, 2, 3, 5

Input  : flist{1, 2, 3, 4, 5, 6, 7, 8}, iterator1= 3, iterator2= 6. i.e., iterator1 is pointing
         to element with index 3 and iterator2 is pointing to element with index 6.
         flist.erase_after(iterator1, iterator2);
Output : 1, 2, 3, 4, 7, 8

Errores y Excepciones
1. Tiene garantía de lanzamiento sin excepción, si la posición es válida. 
2. De lo contrario, muestra un comportamiento indefinido.
Quitar elemento de una posición particular 
 

CPP

// CPP program to illustrate
// Implementation of erase_after() function
#include <forward_list>
#include <iostream>
using namespace std;
 
int main()
{
    forward_list<int> myflist{ 1, 2, 3, 4, 5 };
    forward_list<int>::iterator it;
 
    it = myflist.begin();
    myflist.erase_after(it);
 
    // Printing the forward list
    for (auto it = myflist.begin(); it != myflist.end(); ++it)
        cout << ' ' << *it;
    return 0;
}

Producción: 

1 3 4 5

Eliminar elementos dentro de un rango 
 

CPP

// CPP program to illustrate
// Implementation of erase_after() function
#include <forward_list>
#include <iostream>
using namespace std;
 
int main()
{
    forward_list<int> myflist{ 1, 2, 3, 4, 5 };
    forward_list<int>::iterator it1, it2;
 
    it1 = myflist.begin();
    it2 = myflist.end();
 
    myflist.erase_after(it1, it2);
 
    // Printing the forward list
    for (auto it = myflist.begin(); it != myflist.end(); ++it)
        cout << ' ' << *it;
    return 0;
}

Producción: 

1

 Complejidad temporal: O(N)
Espacio auxiliar: O(1) 

Veamos las diferencias en forma tabular -:

  reenviar_lista::clear()  adelante_lista::borrar_después() 
1. Se utiliza para eliminar todos los elementos del contenedor forward_list Se utiliza para eliminar del contenedor forward_list un solo elemento o un rango de elementos.
2.

Su sintaxis es -:

clear();

Su sintaxis es -:

iterador erase_after (posición de const_iterator);

3. No toma ningún parámetro.

Solo toma dos parámetros que son -:

1. Iterador apuntando a un elemento en el contenedor forward_list. 

2. Iterador apuntando al elemento después del último que se eliminó.

4. No tiene ningún valor de retorno. Su complejidad es Lineal.
5. Su complejidad es Lineal. Está presente en el archivo de encabezado <forward_list> .

Publicación traducida automáticamente

Artículo escrito por AyushSaxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *