std::multimap<Key,T,Compare,Allocator>:: merge
|
template
<
class
C2
>
void merge ( std:: map < Key, T, C2, Allocator > & source ) ; |
(1) |
(depuis C++17)
(constexpr depuis C++26) |
|
template
<
class
C2
>
void merge ( std:: map < Key, T, C2, Allocator > && source ) ; |
(2) |
(depuis C++17)
(constexpr depuis C++26) |
|
template
<
class
C2
>
void merge ( std:: multimap < Key, T, C2, Allocator > & source ) ; |
(3) |
(depuis C++17)
(constexpr depuis C++26) |
|
template
<
class
C2
>
void merge ( std:: multimap < Key, T, C2, Allocator > && source ) ; |
(4) |
(depuis C++17)
(constexpr depuis C++26) |
Tente d'extraire (« épisser ») chaque élément dans source et de l'insérer dans * this en utilisant l'objet de comparaison de * this .
Si get_allocator ( ) == source. get_allocator ( ) est false , le comportement est indéfini.
Aucun élément n'est copié ni déplacé, seuls les pointeurs internes des nœuds du conteneur sont redirigés. Tous les pointeurs et références vers les éléments transférés restent valides, mais se réfèrent désormais à * this , et non à source .
Table des matières |
Paramètres
| source | - | conteneur compatible pour transférer les nœuds depuis |
Exceptions
Ne lance pas sauf si la comparaison lance.
Complexité
Soit S comme size ( ) et N comme source. size ( ) :
Exemple
#include <iostream> #include <map> #include <string> int main() { std::multimap<int, std::string> ma{{1, "apple"}, {5, "pear"}, {10, "banana"}}; std::multimap<int, std::string> mb{{2, "zorro"}, {4, "batman"}, {5, "X"}, {8, "alpaca"}}; std::multimap<int, std::string> u; u.merge(ma); std::cout << "ma.size(): " << ma.size() << '\n'; u.merge(mb); std::cout << "mb.size(): " << mb.size() << '\n'; for (const auto& kv : u) std::cout << kv.first << ", " << kv.second << '\n'; }
Sortie :
ma.size(): 0 mb.size(): 0 1, apple 2, zorro 4, batman 5, pear 5, X 8, alpaca 10, banana
Voir aussi
|
(C++17)
|
extrait les nœuds du conteneur
(fonction membre publique) |
|
insère des éléments
ou des nœuds
(depuis C++17)
(fonction membre publique) |