función forward_list insert_after() en C++ STL

forward_list ::insert_after() es una función incorporada en C++ STL que nos da la opción de insertar elementos en la posición justo después del elemento señalado por un iterador determinado en la lista de avance. Los argumentos de esta función se copian en la posición deseada. Sintaxis: 

forward_list_name.insert_after(iterator position, element)

or,

forward_list_name.insert_after(iterator position, n, element)

or,

forward_list_name.insert_after(iterator position, itr1, itr2)

or,

forward_list_name.insert_after(iterator position, list)

Parámetros: la función acepta diferentes parámetros en función de las diferentes sintaxis anteriores. Veamos cada parámetro en detalle y el funcionamiento de la sintaxis anterior.

  • posición, elemento: la posición del parámetro es de tipo iterador y apunta a la ubicación después de la cual se insertará el valor del elemento del parámetro.
  • posición, n, elemento: la posición del parámetro es de tipo iterador y apunta a la ubicación después de la cual se insertará el valor del elemento del parámetro. El parámetro n especifica el número de veces que se insertará el elemento de valor.
  • position, itr1, itr2: El parámetro position es de tipo iterador y apunta a la ubicación después de la cual se insertarán los valores. Los iteradores itr1 e itr2 denotan un rango [itr1, itr2) y los elementos en este rango que incluyen itr1 y excluyen itr2 se insertarán en la lista de reenvío después del iterador que apunta a la posición dada .
  • posición, lista: El parámetro posición es de tipo iterador y apunta a la ubicación después de la cual se insertarán los valores. La segunda lista de parámetros define la lista de elementos que se insertarán en forward_list.

Valor devuelto: esta función devuelve un iterador que apunta al último elemento insertado. El siguiente programa ilustra la función mencionada anteriormente: 

CPP

// C++ program to illustrate the
// forward_list::insert_after() function
#include <forward_list>
#include <iostream>
#include <list>
 
using namespace std;
 
int main()
{
 
    forward_list<int> fwlist = { 1, 2, 3, 4, 5 };
    list<int> sampleList = { 8, 9, 10 };
 
    // This iterator points to the first element
    auto it_new = fwlist.begin();
 
    // New element to be inserted
    int element = 20;
 
    /******************************/
    /** IMPLEMENTING SYNTAX 1 *****/
    /******************************/
    it_new = fwlist.insert_after(it_new, element);
 
    cout << "After Syntax 1: ";
    for (auto it = fwlist.cbegin(); it != fwlist.cend(); it++) {
        cout << *it << " ";
    }
 
    // it_new points to new element inserted which is 20
    // Make it to point to next element
    it_new++;
 
    /******************************/
    /** IMPLEMENTING SYNTAX 2 *****/
    /******************************/
    it_new = fwlist.insert_after(it_new, 3, element);
 
    cout << "\n\nAfter Syntax 2: ";
    for (auto it = fwlist.cbegin(); it != fwlist.cend(); it++) {
        cout << *it << " ";
    }
 
    /******************************/
    /** IMPLEMENTING SYNTAX 3 *****/
    /******************************/
    it_new = fwlist.insert_after(it_new, sampleList.begin(),
                                sampleList.end());
 
    cout << "\n\nAfter Syntax 3: ";
    for (auto it = fwlist.cbegin(); it != fwlist.cend(); it++) {
        cout << *it << " ";
    }
 
    /******************************/
    /** IMPLEMENTING SYNTAX 4 *****/
    /******************************/
    it_new = fwlist.insert_after(it_new, { 50, 60 });
 
    cout << "\n\nAfter Syntax 4: ";
    for (auto it = fwlist.cbegin(); it != fwlist.cend(); it++) {
        cout << *it << " ";
    }
 
    return 0;
}
Producción:

After Syntax 1: 1 20 2 3 4 5 

After Syntax 2: 1 20 2 20 20 20 3 4 5 

After Syntax 3: 1 20 2 20 20 20 8 9 10 3 4 5 

After Syntax 4: 1 20 2 20 20 20 8 9 10 50 60 3 4 5

Complejidad de tiempo: O(n)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por harsh.agarwal0 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 *