std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::insert_range
Von cppreference.com
< cpp | container | unordered map
| 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, genau dann, wenn kein Element mit einem Schlüssel, der dem Schlüssel dieses Elements in *this entspricht, vorhanden ist.
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 der Elemente 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) aus unordered_map 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_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::unordered_map{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); }
Mögliche Ausgabe
{4,44} {-1,-11} {2,22} {3,33} {-2,-22} {1,11}[bearbeiten] Siehe auch
| fügt Elemente ein oder Knoten(seit C++17) (public member function) |