◐ Shell
clean mode source ↗

std::inserter - cppreference.com

De cppreference.com

</tbody> <tbody class="t-dcl-rev "> </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

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