Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
template< container-compatible-range<value_type> R >
void insert_range( R&& rg );
(seit C++23)

Fügt eine Kopie jedes Elements aus dem Bereich rg in die zugrunde liegenden Container c ein, als ob durch

for (const auto& e : rg)
{
    c.keys.insert(c.keys.end(), e.first);
    c.values.insert(c.values.end(), e.second);
}

Sortiert dann den Bereich der neu eingefügten Elemente in Bezug auf value_comp(). Fasst den resultierenden sortierten Bereich und den sortierten Bereich der bereits vorhandenen Elemente zu einem einzigen sortierten Bereich zusammen.

Jeder Iterator im Bereich rg wird genau einmal dereferenziert. Das Verhalten ist undefiniert, wenn rg mit dem Container überlappt.

Inhalt

[bearbeiten] Parameter

rg - Ein Container-kompatibler Bereich, d. h. ein input_range, dessen Elemente in T konvertierbar sind

[bearbeiten] Rückgabewert

(keine)

[bearbeiten] Komplexität

N + M·log(M), wobei N die size() vor der Operation und M der ranges::distance(rg) ist.

[bearbeiten] Hinweise

Da insert_range eine In-Place-Merge-Operation durchführt, die Speicher zuweisen kann.

[bearbeiten] Beispiel

#include <iostream>
#include <flat_map>
#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_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);
}

Ausgabe

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

[bearbeiten] Siehe auch

fügt Elemente ein
(public member function) [edit]