std::map<Key,T,Compare,Allocator>::merge
| template< class C2 > void merge( std::map<Key, T, C2, Allocator>& source ); |
(1) | (seit C++17) |
| template< class C2 > void merge( std::map<Key, T, C2, Allocator>&& source ); |
(2) | (seit C++17) |
| template< class C2 > void merge( std::multimap<Key, T, C2, Allocator>& source ); |
(3) | (seit C++17) |
| template< class C2 > void merge( std::multimap<Key, T, C2, Allocator>&& source ); |
(4) | (seit C++17) |
Versucht, jedes Element in source zu extrahieren ("splice") und es in *this einzufügen, wobei das Vergleichsobjekt von *this verwendet wird. Wenn ein Element in *this vorhanden ist, dessen Schlüssel äquivalent zum Schlüssel eines Elements aus source ist, dann wird dieses Element nicht aus source extrahiert. Keine Elemente werden kopiert oder verschoben, nur die internen Zeiger der Containerknoten werden neu verknüpft. Alle Zeiger und Referenzen auf die übertragenen Elemente bleiben gültig, verweisen aber nun auf *this und nicht auf source.
Das Verhalten ist undefiniert, wenn get_allocator() != source.get_allocator().
Inhalt |
[bearbeiten] Parameter
| source | - | kompatibler Container, von dem die Knoten übertragen werden sollen |
[bearbeiten] Rückgabewert
(keine)
Ausnahmen
Wirft keine Ausnahmen, es sei denn, der Vergleich wirft Ausnahmen.
[bearbeiten] Komplexität
N * log(size() + N)), wobei N = source.size().
[bearbeiten] Beispiel
#include <iostream> #include <map> #include <string> int main() { std::map<int, std::string> ma{{1, "apple"}, {5, "pear"}, {10, "banana"}}; std::map<int, std::string> mb{{2, "zorro"}, {4, "batman"}, {5, "X"}, {8, "alpaca"}}; std::map<int, std::string> u; u.merge(ma); std::cout << "ma.size(): " << ma.size() << '\n'; u.merge(mb); std::cout << "mb.size(): " << mb.size() << '\n'; std::cout << "mb.at(5): " << mb.at(5) << '\n'; for (auto const& kv : u) std::cout << kv.first << ", " << kv.second << '\n'; }
Ausgabe
ma.size(): 0 mb.size(): 1 mb.at(5): X 1, apple 2, zorro 4, batman 5, pear 8, alpaca 10, banana
[bearbeiten] Siehe auch
| (C++17) |
extrahiert Knoten aus dem Container (public member function) |
| fügt Elemente ein oder Knoten(seit C++17) (public member function) |