std::deque<T,Allocator>:: operator=
|
deque
&
operator
=
(
const
deque
&
other
)
;
|
(1) | (constexpr depuis C++26) |
| (2) | ||
|
deque
&
operator
=
(
deque
&&
other
)
;
|
(depuis C++11)
(jusqu'à C++17) |
|
|
deque
&
operator
=
(
deque
&&
other
)
noexcept ( /* voir ci-dessous */ ) ; |
(depuis C++17)
(constexpr depuis C++26) |
|
|
deque
&
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
>
:
|
Si traits :: propagate_on_container_copy_assignment :: value est true , l'allocateur de * this est remplacé par une copie de other . Si l'allocateur de * this après l'affectation serait différent de son ancienne valeur, l'ancien allocateur est utilisé pour désallouer la mémoire, puis le nouvel allocateur est utilisé pour l'allouer avant de copier les éléments. Sinon, la mémoire appartenant à * this peut être réutilisée lorsque possible. Dans tous les cas, les éléments appartenant initialement à * this peuvent être soit détruits soit remplacés par une copie par affectation élément par élément. |
(depuis C++11) |
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'assignation par déplacement du conteneur (surcharge (2)), sauf si l'assignation 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 une std::deque à une autre :
Exécuter ce code
#include <initializer_list> #include <iostream> #include <iterator> #include <deque> void print(const auto comment, const auto& container) { auto size = std::size(container); std::cout << comment << "{ "; for (const auto& element : container) std::cout << element << (--size ? ", " : " "); std::cout << "}\n"; } int main() { std::deque<int> x{1, 2, 3}, y, z; const auto w = {4, 5, 6, 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 : Initially:
x = { 1, 2, 3 }
y = { }
z = { }
Copy assignment copies data from x to y:
x = { 1, 2, 3 }
y = { 1, 2, 3 }
Move assignment moves data from x to z, modifying both x and z:
x = { }
z = { 1, 2, 3 }
Assignment of initializer_list w to z:
w = { 4, 5, 6, 7 }
z = { 4, 5, 6, 7 }
Voir aussi
|