std::unordered_multiset<Key,Hash,KeyEqual,Allocator>::insert_range
Von cppreference.com
< cpp | container | unordered multiset
| template< container-compatible-range<value_type> R > void insert_range( R&& rg ); |
(seit C++23) | |
Fügt eine Kopie jedes Elements im Bereich rg ein.
Jeder Iterator im Bereich rg wird genau einmal dereferenziert. Das Verhalten ist undefiniert, wenn rg mit dem Container überlappt.
Wenn nach der Operation die neue Anzahl von Elementen größer ist als max_load_factor() * bucket_count(), findet ein Rehashing statt.
Wenn Rehashing stattfindet (aufgrund der Einfügung), werden alle Iteratoren ungültig. Andernfalls (kein Rehashing) werden Iteratoren nicht ungültig.
Inhalt |
[bearbeiten] Parameter
| rg | - | Ein Container-kompatibler Bereich, d. h. ein input_range, dessen Elemente in T konvertierbar sind |
| Typanforderungen | ||
-value_type muss *ranges::begin(rg) von *ranges::begin(rg) in unordered_multiset EmplaceConstructible sein. Andernfalls ist das Verhalten undefiniert. | ||
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Komplexität
Durchschnittlich O(N), wobei N ranges::distance(rg) ist, im schlechtesten Fall O(N·(a.size() + 1)).
[bearbeiten] Hinweise
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Ranges-kompatible Konstruktion und Einfügung |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <unordered_set> void println(auto, auto const& container) { for (const auto& elem : container) std::cout << elem << ' '; std::cout << '\n'; } int main() { auto container = std::unordered_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); }
Mögliche Ausgabe
1 -2 3 3 2 -1 4
[bearbeiten] Siehe auch
| fügt Elemente ein oder Knoten(seit C++17) (public member function) |