std::inserter
De cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
| Definido en el archivo de encabezado <iterator>
|
||
template< class Container > std::insert_iterator<Container> inserter( Container& c, typename Container::iterator i ); |
(hasta C++20) | |
template< class Container > constexpr std::insert_iterator<Container> inserter( Container& c, ranges::iterator_t<Container> i ); |
(desde C++20) | |
inserter es una plantilla de función de conveniencia que construye un std::insert_iterator para el contenedor c y su iterador i con el tipo deducido del tipo del argumento.
Parámetros
| c | - | Contenedor que admite una operación insert.
|
| i | - | Iterador en c que indica la posición de inserción.
|
Valor de retorno
Un std::insert_iterator que puede usarse para insertar elementos en el contenedor c en la posición indicada por i.
Posible implementación
template<class Container>
std::insert_iterator<Container> inserter(Container& c, typename Container::iterator i)
{
return std::insert_iterator<Container>(c, i);
}
|
Ejemplo
Ejecuta este código
#include <algorithm>
#include <iostream>
#include <iterator>
#include <set>
#include <vector>
int main()
{
std::multiset<int> s{1, 2, 3};
// std::inserter se usa comúnmente con multi-sets
std::fill_n(std::inserter(s, s.end()), 5, 2);
for (int n : s)
std::cout << n << ' ';
std::cout << '\n';
std::vector<int> d{100, 200, 300};
std::vector<int> v{1, 2, 3, 4, 5};
// al insertar en un contenedor de secuencias, el punto de inserción avanza
// porque cada std::insert_iterator::operator= actualiza al iterador destino
std::copy(d.begin(), d.end(), std::inserter(v, std::next(v.begin())));
for (int n : v)
std::cout << n << ' ';
std::cout << '\n';
}
Salida:
1 2 2 2 2 2 2 3
1 100 200 300 2 3 4 5
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 561 | C++98 | El tipo de i era independiente de Container
|
Es el tipo de iterador de Container
|
Véase también
| Adaptador de iterador para la inserción en un contenedor. (plantilla de clase) | |
| Crea un std::back_insert_iterator de tipo inferido a partir del argumento. (plantilla de función) | |
| Crea un std::front_insert_iterator de tipo inferido a partir del argumento. (plantilla de función) |