Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | container‎ | flat set
 
 
 
 
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 den zugrunde liegenden Container c ein, als ob durch

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

Sortiert dann den Bereich der neu eingefügten Elemente bezüglich compare. Fasst den resultierenden sortierten Bereich und den sortierten Bereich der bereits vorhandenen Elemente zu einem einzigen sortierten Bereich zusammen. Löscht schließlich alle außer dem ersten Element aus jeder Gruppe aufeinanderfolgender gleicher Elemente.

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_set>
 
void println(auto, auto const& container)
{
    for (const auto& elem : container)
        std::cout << elem << ' ';
    std::cout << '\n';
}
 
int main()
{
    auto container = std::flat_set{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 4

[bearbeiten] Siehe auch

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