Namespaces
Variants

std::forward_list<T,Allocator>:: insert_after

From cppreference.net
iterator insert_after ( const_iterator pos, const T & value ) ;
(1) (desde C++11)
(constexpr desde C++26)
iterator insert_after ( const_iterator pos, T && value ) ;
(2) (desde C++11)
(constexpr desde C++26)
iterator insert_after ( const_iterator pos,
size_type count, const T & value ) ;
(3) (desde C++11)
(constexpr desde C++26)
template < class InputIt >

iterator insert_after ( const_iterator pos,

InputIt first, InputIt last ) ;
(4) (desde C++11)
(constexpr desde C++26)
iterator insert_after ( const_iterator pos,
std:: initializer_list < T > ilist ) ;
(5) (desde C++11)
(constexpr desde C++26)

Inserta elementos después de la posición especificada en el contenedor. Si pos es before_begin() , el primer elemento insertado (si existe) se convertirá en el primer elemento de * this .

Si pos no está en el rango [ before_begin() , end() ) , el comportamiento es indefinido.

1,2) Inserta una copia de value después de pos .
1) Si T no es CopyInsertable en forward_list , el comportamiento es indefinido.
2) Si T no es MoveInsertable en forward_list , el comportamiento es indefinido.
3) Inserta count copias del value después de pos .
Si T no es CopyInsertable en forward_list , el comportamiento es indefinido.
4) Inserta elementos del rango [ first , last ) después de pos .
Esta sobrecarga participa en la resolución de sobrecarga solo si InputIt satisface los requisitos de LegacyInputIterator .
Si se satisface cualquiera de las siguientes condiciones, el comportamiento es indefinido:
5) Inserta elementos de la lista de inicializadores ilist después de pos .
Equivalente a return insert_after ( position, ilist. begin ( ) , ilist. end ( ) ) ; .

No se invalidan iteradores ni referencias.

Contenidos

Parámetros

pos - iterador después del cual se insertará el contenido
value - valor del elemento a insertar
count - número de copias a insertar
first, last - el par de iteradores que define el rango fuente de elementos a insertar
ilist - lista de inicializadores de la cual insertar los valores

Valor de retorno

1,2) Iterador al elemento insertado.
3) Iterador al último elemento insertado, o pos si count == 0 es true .
4) Iterador al último elemento insertado, o pos si first == last es true .
5) Iterador al último elemento insertado, o pos si ilist está vacío.

Excepciones

Si se lanza una excepción por cualquier razón, estas funciones no tienen efecto ( strong exception safety guarantee ).

Complejidad

1,2) Constante.
3) Lineal en count .
4) Lineal en std:: distance ( first, last ) .
5) Lineal en ilist. size ( ) .

Ejemplo

#include <forward_list>
#include <iostream>
#include <string>
#include <vector>
void print(const std::forward_list<int>& list)
{
    std::cout << "list: {";
    for (char comma[3] = {'\0', ' ', '\0'}; int i : list)
    {
        std::cout << comma << i;
        comma[0] = ',';
    }
    std::cout << "}\n";
}
int main()
{
    std::forward_list<int> ints{1, 2, 3, 4, 5};
    print(ints);
    // insert_after (2)
    auto beginIt = ints.begin();
    ints.insert_after(beginIt, -6);
    print(ints);
    // insert_after (3)
    auto anotherIt = beginIt;
    ++anotherIt;
    anotherIt = ints.insert_after(anotherIt, 2, -7);
    print(ints);
    // insert_after (4)
    const std::vector<int> v = {-8, -9, -10};
    anotherIt = ints.insert_after(anotherIt, v.cbegin(), v.cend());
    print(ints);
    // insert_after (5)
    ints.insert_after(anotherIt, {-11, -12, -13, -14});
    print(ints);
}

Salida:

list: {1, 2, 3, 4, 5}
list: {1, -6, 2, 3, 4, 5}
list: {1, -6, -7, -7, 2, 3, 4, 5}
list: {1, -6, -7, -7, -8, -9, -10, 2, 3, 4, 5}
list: {1, -6, -7, -7, -8, -9, -10, -11, -12, -13, -14, 2, 3, 4, 5}

Véase también

construye elementos in-situ después de un elemento
(función miembro pública)
inserta un elemento al principio
(función miembro pública)