Espacios de nombres
Variantes
Acciones

std::flat_set<Key,Compare,KeyContainer>::insert_range

De cppreference.com
< cpp‎ | container‎ | flat set
 
 
 
 
template< rango-compatible-con-contenedores<value_type> R >
void insert_range( R&& rg );
(desde C++23)

Inserta una copia de cada elemento en el rango rg en el contenedor subyacente c como si fuera por:

for (const auto& e : rg)
    c.insert(c.end(), e);

Luego, ordena el rango de elementos recién insertados con respecto a compare. Combina el rango ordenado resultante y el rango ordenado de elementos preexistentes en un único rango ordenado. Finalmente, borra todos menos el primer elemento de cada grupo de elementos equivalentes consecutivos.

Cada iterador en el rango rg se desreferencia exactamente una vez. El comportamiento no está definido si rg se superpone con el contenedor.

La información sobre la invalidación del iterador se copia de aquí

Contenido

[editar] Parámetros

rg - Un rango compatible con contenedores, es decir, un input_range cuyos elementos son convertibles a T

[editar] Valor de retorno

(Ninguno)

[editar] Complejidad

Caso promedio O(N), donde N es ranges::distance(rg), en el pero caso O((a.size() + 1)).

[editar] Notas

Dado que insert_range realiza una operación de mezcla in situ, se podría asignar memoria.

[editar] Ejemplo

#include <iostream>
#include <...>
#include <utility>
 
void println(auto, auto const& container)
{
    for (const auto& [key, value] : container)
        std::cout << '{' << key << ',' << value << '}' << ' ';
    std::cout << '\n';
}
 
int main()
{
    auto container = std::flat_set{std::pair{1, 11}, {3, 33}, {2, 22}, {4, 44}};
    const auto rg = {std::pair{-1, -11}, {3, -33}, {-2, -22}};
#ifdef __cpp_lib_containers_ranges
    container.insert_range(rg);
#else
    container.insert(rg.begin(), rg.end());
#endif
    println("{}", container);
}


[editar] Véase también

(C++23)
Inserta elementos
(función miembro pública) [editar]