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
(C++11)
(C++11)
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 >

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.

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)
{
    return std::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-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

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