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.
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.
|
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.Excepciones
Si se lanza una excepción durante insert_after no hay efectos (garantía de excepción fuerte).
Complejidad
1-2) Constante.
3) Lineal en
count.4) Lineal en
std::distance(first, last).5) Lineal en
ilist.size().Ejemplo
Ejecuta este código
#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]
Véase también
(C++11) |
Construye elementos en el sitio después de un elemento. (función miembro pública) |
(C++11) |
Inserta un elemento al principio del contenedor. (función miembro pública) |