std::unordered_map<Key,T,Hash,KeyEqual,Allocator>:: operator=
|
unordered_map
&
operator
=
(
const
unordered_map
&
other
)
;
|
(1) |
(depuis C++11)
(constexpr depuis C++26) |
| (2) | ||
|
unordered_map
&
operator
=
(
unordered_map
&&
other
)
;
|
(depuis C++11)
(jusqu'à C++17) |
|
|
unordered_map
&
operator
=
(
unordered_map
&&
other
)
noexcept ( /* voir ci-dessous */ ) ; |
(depuis C++17)
(constexpr depuis C++26) |
|
|
unordered_map
&
operator
=
(
std::
initializer_list
<
value_type
>
ilist
)
;
|
(3) |
(depuis C++11)
(constexpr depuis C++26) |
Remplace le contenu du conteneur.
Soit
traits
le
std::
allocator_traits
<
allocator_type
>
:
ContenuParamètres
Valeur de retour* this Complexité
1)
Linéaire dans la taille de
*
this
et
other
.
2)
Linéaire dans la taille de
*
this
sauf si les allocateurs ne sont pas égaux et ne se propagent pas, auquel cas linéaire dans la taille de
*
this
et
other
.
3)
Linéaire dans la taille de
*
this
et
ilist
.
Exceptions
NotesAprès l'affectation par déplacement de conteneur (surcharge (2)), sauf si l'affectation par déplacement élément par élément est forcée par des allocateurs incompatibles, les références, pointeurs et itérateurs qui se référaient initialement aux éléments dans ExempleLe code suivant utilise operator = pour assigner un std::unordered_map à un autre :
Exécuter ce code
#include <initializer_list> #include <iostream> #include <iterator> #include <unordered_map> #include <utility> void print(const auto comment, const auto& container) { auto size = std::size(container); std::cout << comment << "{ "; for (const auto& [key, value] : container) std::cout << '{' << key << ',' << value << (--size ? "}, " : "} "); std::cout << "}\n"; } int main() { std::unordered_map<int, int> x{{1,1}, {2,2}, {3,3}}, y, z; const auto w = {std::pair<const int, int>{4,4}, {5,5}, {6,6}, {7,7}}; std::cout << "Initially:\n"; print("x = ", x); print("y = ", y); print("z = ", z); std::cout << "Copy assignment copies data from x to y:\n"; y = x; print("x = ", x); print("y = ", y); std::cout << "Move assignment moves data from x to z, modifying both x and z:\n"; z = std::move(x); print("x = ", x); print("z = ", z); std::cout << "Assignment of initializer_list w to z:\n"; z = w; print("w = ", w); print("z = ", z); } Sortie possible : Initially:
x = { {3,3}, {2,2}, {1,1} }
y = { }
z = { }
Copy assignment copies data from x to y:
x = { {3,3}, {2,2}, {1,1} }
y = { {3,3}, {2,2}, {1,1} }
Move assignment moves data from x to z, modifying both x and z:
x = { }
z = { {3,3}, {2,2}, {1,1} }
Assignment of initializer_list w to z:
w = { {4,4}, {5,5}, {6,6}, {7,7} }
z = { {7,7}, {6,6}, {5,5}, {4,4} }
Voir aussi
|