std::flat_set<Key,Compare,KeyContainer>::insert_range
| 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.
| Informationen zur Iterator-Invalidierung sind von hier kopiert. |
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) |