forward_list::push_front() y forward_list::pop_front() 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.
 

adelante_lista::push_front

La función push_front() se utiliza para insertar elementos en una lista de Adelante desde el frente. El nuevo valor se inserta en la lista Adelante al principio, antes del primer elemento actual y el tamaño del contenedor aumenta en 1.
Sintaxis: 
 

forwardlistname.push_front(value)
Parameters :
The value to be added in the front is 
passed as the parameter
Result :
Adds the value mentioned as the parameter to the
front of the forward list named as forwardlistname

Ejemplos: 
 

Input : forward_list forwardlist{1, 2, 3, 4, 5};
        forwardlist.push_front(6);
Output : 6, 1, 2, 3, 4, 5

Input : forward_list forwardlist{5, 4, 3, 2, 1};
        forwardlist.push_front(6);
Output :6, 5, 4, 3, 2, 1

Errores y excepciones
1. Fuerte garantía de excepción: si se lanza una excepción, no hay cambios en el contenedor. 
2. Si el valor pasado como argumento no es compatible con la lista de reenvío, muestra un comportamiento indefinido.
 

CPP

// CPP program to illustrate
// push_front() function
#include <forward_list>
#include <iostream>
using namespace std;
 
int main()
{
    forward_list<int> myforwardlist{ 1, 2, 3, 4, 5 };
    myforwardlist.push_front(6);
 
    // Forward list becomes 6, 1, 2, 3, 4, 5
 
    for (auto it = myforwardlist.begin(); it != myforwardlist.end(); ++it)
        cout << ' ' << *it;
}

Producción: 
 

6 1 2 3 4 5

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Aplicación: Ingrese una lista de reenvío vacía con los siguientes números y ordene usando la función push_front() y ordene la lista de reenvío dada. 
 

Input :  7, 89, 45, 6, 24, 58, 43
Output : 6, 7, 24, 43, 45, 58, 89

CPP

// CPP program to illustrate
// application Of push_front() function
#include <forward_list>
#include <iostream>
using namespace std;
 
int main()
{
    forward_list<int> myforwardlist{};
    myforwardlist.push_front(43);
    myforwardlist.push_front(58);
    myforwardlist.push_front(24);
    myforwardlist.push_front(6);
    myforwardlist.push_front(45);
    myforwardlist.push_front(89);
    myforwardlist.push_front(7);
 
    // Forward list becomes 7, 89, 45, 6, 24, 58, 43
    // Sorting function
 
    myforwardlist.sort();
 
    for (auto it = myforwardlist.begin(); it != myforwardlist.end(); ++it)
        cout << ' ' << *it;
}

Producción 
 

6 7 24 43 45 58 89
adelante_lista::pop_front

La función pop_front() se usa para abrir o eliminar elementos de una lista de avance desde el frente. El valor se elimina de la lista desde el principio y el tamaño del contenedor se reduce en 1.
Sintaxis: 
 

forwardlistname.pop_front()
Parameters :
No parameter is passed as the parameter.
Result :
Removes the value present at the front 
of the given forward list named as forwardlistname

Ejemplos: 
 

Input : forward_list forwardlist{1, 2, 3, 4, 5};
        forwardlist.pop_front();
Output :2, 3, 4, 5

Input : forward_list forwardlist{5, 4, 3, 2, 1};
        forwardlist.pop_front();
Output :4, 3, 2, 1

Errores y excepciones
1. Garantía de no lanzamiento: si se lanza una excepción, no hay cambios en el contenedor. 
2. Si la lista está vacía, muestra un comportamiento indefinido.
 

CPP

// CPP program to illustrate
// pop_front() function
#include <forward_list>
#include <iostream>
using namespace std;
 
int main()
{
    forward_list<int> myforwardlist{ 1, 2, 3, 4, 5 };
    myforwardlist.pop_front();
 
    // forward list becomes 2, 3, 4, 5
 
    for (auto it = myforwardlist.begin(); it != myforwardlist.end(); ++it)
        cout << ' ' << *it;
}

Producción: 
 

2 3 4 5

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Aplicación: ingrese una lista de avance vacía con los siguientes números y ordene usando la función push_front() e imprima el reverso de la lista. 
 

Input : 1, 2, 3, 4, 5, 6, 7, 8
Output: 8, 7, 6, 5, 4, 3, 2, 1

CPP

// CPP program to illustrate
// application Of pop_front() function
#include <forward_list>
#include <iostream>
using namespace std;
 
int main()
{
    forward_list<int> myforwardlist{}, newforwardlist{};
    myforwardlist.push_front(8);
    myforwardlist.push_front(7);
    myforwardlist.push_front(6);
    myforwardlist.push_front(5);
    myforwardlist.push_front(4);
    myforwardlist.push_front(3);
    myforwardlist.push_front(2);
    myforwardlist.push_front(1);
 
    // Forward list becomes 1, 2, 3, 4, 5, 6, 7, 8
 
    while (!myforwardlist.empty()) {
        newforwardlist.push_front(myforwardlist.front());
        myforwardlist.pop_front();
    }
    for (auto it = newforwardlist.begin(); it != newforwardlist.end(); ++it)
        cout << ' ' << *it;
}

Producción 
 

8 7 6 5 4 3 2 1

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

 Veamos las diferencias en forma tabular -:

  adelante_lista::push_front()  adelante_lista::pop_front()
1. Se utiliza para insertar un nuevo elemento al principio de la lista de envío. Se usa para eliminar el primer elemento en el contenedor forward_list
2. Su sintaxis es -:
push_front (const value_type& val);

Su sintaxis es -:

frente_pop();

3. Solo toma un parámetro que es el valor a copiar al elemento insertado. No toma ningún parámetro.
4. Su complejidad es constante. No tiene ningún valor de retorno.
5. Su validez de iterador no cambia. Su complejidad es constante.

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 *