std::inserter
De cppreference.com
Definido en el archivo de encabezado <iterator> | ||
template<class Container > std::insert_iterator<Container> | (hasta C++20) | |
template<class Container > constexprstd::insert_iterator<Container> | (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
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-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) | |
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) |