Namespaces
Variants

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

From cppreference.net

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

Fügt eine Kopie jedes Elements im Bereich rg in den zugrundeliegenden Container c ein, als ob durch:

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

Sortiert anschließend den Bereich der neu eingefügten Elemente in Bezug auf compare . Führt 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.

Wenn eine der folgenden Bedingungen erfüllt ist, ist das Verhalten undefiniert:

Inhaltsverzeichnis

Parameter

rg - ein container kompatibler Bereich , also ein input_range , dessen Elemente konvertierbar zu T sind

Komplexität

S+N·log(N) , wobei S die size ( ) und N die ranges:: distance ( rg ) ist.

Hinweise

Da insert_range einen In-Place-Merge-Vorgang durchführt, kann dies Speicher allozieren.

Beispiel

#include <iostream>
#include <flat_set>
void println(auto, const auto& container)
{
    for (const auto& elem : container)
        std::cout << elem << ' ';
    std::cout << '\n';
}
int main()
{
    auto container = std::flat_multiset{1, 3, 2, 4};
    const auto rg = {-1, 3, -2};
#ifdef __cpp_lib_containers_ranges
    container.insert_range(rg);
#else
    container.insert(rg.begin(), rg.end());
#endif
    println("{}", container);
}

Ausgabe:

-2 -1 1 2 3 3 4

Siehe auch

fügt Elemente ein
(öffentliche Elementfunktion)