Espacios de nombres
Variantes
Acciones

std::forward_list::insert_after

De cppreference.com
 
 
 
 
iterator insert_after( const_iterator pos, const T& value );
(1) (desde C++11)
iterator insert_after( const_iterator pos, T&& value );
(2) (desde C++11)
iterator insert_after( const_iterator pos, size_type count, const T& value );
(3) (desde C++11)
template< class InputIt >
iterator insert_after( const_iterator pos, InputIt first, InputIt last );
(4) (desde C++11)
iterator insert_after( const_iterator pos, std::initializer_list<T> ilist );
(5) (desde C++11)

Inserta elementos en el contenedor después de la posición especificada.

1-2) Inserta value después del elemento al que apunta pos.
3) Inserta count copias del valor value después del elemento al que apunta pos.
4) Inserta elements del rango [first, last) después del elemento al que apunta pos. El comportamiento no está definido si first y last son iteradores en *this.
5) Inserta elements de la lista de inicializadores ilist.

No se invalidan ni referencias ni iteradores.

Contenido

[editar] 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 rango de elementos a insertar.
ilist - Lista de inicializadores de la cual insertar.
Requisitos de tipo
-
InputIt debe satisfacer los requisitos de InputIterator.

[editar] Valor de retorno

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

[editar] Excepciones

Si se lanza una excepción durante insert_after no hay efectos (garantía de excepción fuerte).

[editar] Complejidad

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

[editar] Ejemplo

#include <forward_list>                                                         
#include <string>                                                               
#include <iostream>                                                             
#include <vector>                                                               
 
template<typename T>                                                            
std::ostream& operator<<(std::ostream& s, const std::forward_list<T>& v) {      
    s.put('[');                                                                 
    char comma[3] = {'\0', ' ', '\0'};                                          
    for (const auto& e : v) {                                                   
        s << comma << e;                                                        
        comma[0] = ',';                                                         
    }                                                                           
    return s << ']';                                                            
}                                                                               
 
int main()                                                                      
{                                                                               
    std::forward_list<std::string> words {"the", "frogurt", "is", "also", "cursed"};
    std::cout << "words: " << words << '\n';                                    
 
    // insert_after (2)                                                         
    auto beginIt = words.begin();                                               
    words.insert_after(beginIt, "strawberry");                                  
    std::cout << "words: " << words << '\n';                                    
 
    // insert_after (3)                                                         
    auto anotherIt = beginIt;                                                   
    ++anotherIt;                                                                
    anotherIt = words.insert_after(anotherIt, 2, "strawberry");                 
    std::cout << "words: " << words << '\n';                                    
 
    // insert_after (4)
    std::vector<std::string> V = { "apple", "banana", "cherry"};                
    anotherIt = words.insert_after(anotherIt, V.begin(), V.end());              
    std::cout << "words: " << words << '\n';                                    
 
    // insert_after (5)                                                         
    words.insert_after(anotherIt, {"jackfruit", "kiwifruit", "lime", "mango"});
    std::cout << "words: " << words << '\n';                                    
}

Salida:

words: [the, frogurt, is, also, cursed]
words: [the, strawberry, frogurt, is, also, cursed]
words: [the, strawberry, strawberry, strawberry, frogurt, is, also, cursed]
words: [the, strawberry, strawberry, strawberry, apple, banana, cherry, frogurt, is, also, cursed]
words: [the, strawberry, strawberry, strawberry, apple, banana, cherry, jackfruit, kiwifruit, lime, mango, frogurt, is, also, cursed]

[editar] Véase también

Construye elementos en el sitio después de un elemento.
(función miembro pública) [editar]
Inserta un elemento al principio del contenedor.
(función miembro pública) [editar]