std::forward_list<T,Allocator>:: operator=
|
forward_list
&
operator
=
(
const
forward_list
&
other
)
;
|
(1) |
(depuis C++11)
(constexpr depuis C++26) |
| (2) | ||
|
forward_list
&
operator
=
(
forward_list
&&
other
)
;
|
(depuis C++11)
(jusqu'à C++17) |
|
|
forward_list
&
operator
=
(
forward_list
&&
other
)
noexcept ( /* voir ci-dessous */ ) ; |
(depuis C++17)
(constexpr depuis C++26) |
|
|
forward_list
&
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
>
:
Table des matières |
Paramètres
| other | - | autre conteneur à utiliser comme source de données |
| ilist | - | liste d'initialisation à utiliser comme source de données |
Valeur de retour
* this
Complexité
Exceptions
|
2)
noexcept
spécification :
noexcept
(
std::
allocator_traits
<
Allocator
>
::
is_always_equal
::
value
)
|
(depuis C++17) |
Notes
Après l'affectation par déplacement du 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 (à l'exception de l'itérateur de fin) vers other restent valides, mais se réfèrent aux éléments qui se trouvent désormais dans * this . La norme actuelle garantit ceci via l'énoncé général dans [container.reqmts]/67 , et une garantie plus directe est à l'étude via LWG issue 2321 .
Exemple
Le code suivant utilise operator = pour assigner une std::forward_list à une autre :
#include <initializer_list> #include <iostream> #include <iterator> #include <forward_list> void print(const auto comment, const auto& container) { auto size = std::ranges::distance(container); std::cout << comment << "{ "; for (const auto& element : container) std::cout << element << (--size ? ", " : " "); std::cout << "}\n"; } int main() { std::forward_list<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
construit le
forward_list
(fonction membre publique) |
|
|
assigne des valeurs au conteneur
(fonction membre publique) |