Espacios de nombres
Variantes
Acciones

std::inserter

De cppreference.com
< cpp‎ | iterator
 
 
Biblioteca de iteradores
Conceptos de iteradores
Primitivas de iteradores
Conceptos de algoritmos y servicios
Conceptos invocables indirectos
Requerimientos comunes de algoritmos
Servicios
Adaptadores de iteradores
Iteradores de flujos
Puntos de personalización de iteradores
Operaciones de iteradores
Acceso a rangos
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
(C++17)
 
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 >

constexprstd::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.

Contenido

[editar]Parámetros

c - Contenedor que admite una operación insert.
i - Iterador en c que indica la posición de inserción.

[editar]Valor de retorno

Un std::insert_iterator que puede usarse para insertar elementos en el contenedor c en la posición indicada por i.

[editar]Posible implementación

template<class Container>std::insert_iterator<Container> inserter(Container& c, typename Container::iterator i){returnstd::insert_iterator<Container>(c, i);}

[editar]Ejemplo

#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-setsstd::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 destinostd::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

[editar]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

[editar]Véase también

Adaptador de iterador para la inserción en un contenedor.
(plantilla de clase)[editar]
Crea un std::back_insert_iterator de tipo inferido a partir del argumento.
(plantilla de función)[editar]
Crea un std::front_insert_iterator de tipo inferido a partir del argumento.
(plantilla de función)[editar]
close