Namespaces
Variants

std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>:: insert_range

From cppreference.net

template < container-compatible-range < value_type > R >
void insert_range ( R && rg ) ;
(depuis C++23)
(constexpr depuis C++26)

Insère une copie de chaque élément dans la plage rg dans les conteneurs sous-jacents c comme si par :

for (const auto& e : rg)
{
    c.keys.insert(c.keys.end(), e.first);
    c.values.insert(c.values.end(), e.second);
}
Le code C++ a été conservé intact comme demandé, car il se trouve dans des balises `
` et contient des termes spécifiques au C++. Seule la structure HTML environnante a été préservée sans modification.

Trie ensuite la plage des éléments nouvellement insérés par rapport à value_comp() . Fusionne la plage triée résultante et la plage triée des éléments préexistants en une seule plage triée.

Chaque itérateur dans la plage rg est déréférencé exactement une fois.

Si l'une des conditions suivantes est satisfaite, le comportement est indéfini :

Table des matières

Paramètres

rg - une plage compatible avec un conteneur , c'est-à-dire une input_range dont les éléments sont convertibles en T

Complexité

S+N·log(N) , où S est size ( ) et N est ranges:: distance ( rg ) .

Notes

Puisque insert_range effectue une opération de fusion en place, cela peut allouer de la mémoire.

Exemple

#include <iostream>
#include <flat_map>
#include <utility>
void println(auto, const auto& container)
{
    for (const auto& [key, value] : container)
        std::cout << '{' << key << ',' << value << '}' << ' ';
    std::cout << '\n';
}
int main()
{
    auto container = std::flat_multimap{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);
}

Sortie :

{-2,-22} {-1,-11} {1,11} {2,22} {3,33} {3,-33} {4,44}

Voir aussi

insère des éléments
(fonction membre publique)