std::unordered_multiset<Key,Hash,KeyEqual,Allocator>:: merge
|
template
<
class
H2,
class
P2
>
void merge ( std:: unordered_set < Key, H2, P2, Allocator > & source ) ; |
(1) |
(depuis C++17)
(constexpr depuis C++26) |
|
template
<
class
H2,
class
P2
>
void merge ( std:: unordered_set < Key, H2, P2, Allocator > && source ) ; |
(2) |
(depuis C++17)
(constexpr depuis C++26) |
|
template
<
class
H2,
class
P2
>
void merge ( std:: unordered_multiset < Key, H2, P2, Allocator > & source ) ; |
(3) |
(depuis C++17)
(constexpr depuis C++26) |
|
template
<
class
H2,
class
P2
>
void merge ( std:: unordered_multiset < Key, H2, P2, 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 la fonction de hachage et le prédicat d'égalité des clés de * this .
Si get_allocator ( ) == source. get_allocator ( ) est false , le comportement est indéfini.
Aucun élément n'est copié ou 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 . Les itérateurs référençant les éléments transférés et tous les itérateurs référençant * this sont invalidés.
Table des matières |
Paramètres
| source | - | conteneur compatible pour transférer les nœuds depuis |
Complexité
Soit S comme size ( ) et N comme source. size ( ) :
Exemple
#include <iostream> #include <unordered_set> // print out a container template<class Os, class K> Os& operator<<(Os& os, const std::unordered_multiset<K>& v) { os << '[' << v.size() << "] {"; bool o{}; for (const auto& e : v) os << (o ? ", " : (o = 1, " ")) << e; return os << " }\n"; } int main() { std::unordered_multiset<char> p{'C', 'B', 'B', 'A'}, q{'E', 'D', 'E', 'C'}; std::cout << "p: " << p << "q: " << q; p.merge(q); std::cout << "p.merge(q);\n" << "p: " << p << "q: " << q; }
Sortie possible :
p: [4] { A, B, B, C }
q: [4] { C, D, E, E }
p.merge(q);
p: [8] { E, E, D, A, B, B, C, C }
q: [0] { }
Voir aussi
|
(C++17)
|
extrait des nœuds du conteneur
(fonction membre publique) |
|
insère des éléments
ou des nœuds
(depuis C++17)
(fonction membre publique) |