std::forward_list<T,Allocator>:: swap
|
void
swap
(
forward_list
&
other
)
;
|
(depuis C++11)
(jusqu'à C++17) |
|
|
void
swap
(
forward_list
&
other
)
noexcept
(
/* voir ci-dessous */
)
;
|
(depuis C++17)
(constexpr depuis C++26) |
|
Échange le contenu du conteneur avec celui de other . N'invoque aucune opération de déplacement, de copie ou d'échange sur les éléments individuels.
Tous les itérateurs et références restent valides. Il n'est pas spécifié si un itérateur contenant la
end()
valeur dans ce conteneur se référera à ce conteneur ou à l'autre conteneur après l'opération.
Si
std::
allocator_traits
<
allocator_type
>
::
propagate_on_container_swap
::
value
est
true
, alors les allocateurs sont échangés en utilisant un appel non qualifié à la fonction non-membre
swap
. Sinon, ils ne sont pas échangés (et si
get_allocator
(
)
!
=
other.
get_allocator
(
)
, le comportement est indéfini).
Table des matières |
Paramètres
| autre | - | conteneur avec lequel échanger le contenu |
Exceptions
|
(aucun) |
(jusqu'à C++17) |
|
noexcept
spécification :
noexcept
(
std::
allocator_traits
<
Allocator
>
::
is_always_equal
::
value
)
|
(depuis C++17) |
Complexité
Constante.
Exemple
#include <iostream> #include <forward_list> template<class Os, class Co> Os& operator<<(Os& os, const Co& co) { os << '{'; for (const auto& i : co) os << ' ' << i; return os << " } "; } int main() { std::forward_list<int> a1{1, 2, 3}, a2{4, 5}; auto it1 = std::next(a1.begin()); auto it2 = std::next(a2.begin()); int& ref1 = a1.front(); int& ref2 = a2.front(); std::cout << a1 << a2 << *it1 << ' ' << *it2 << ' ' << ref1 << ' ' << ref2 << '\n'; a1.swap(a2); std::cout << a1 << a2 << *it1 << ' ' << *it2 << ' ' << ref1 << ' ' << ref2 << '\n'; // Notez qu'après l'échange, les itérateurs et références restent associés à leurs // éléments d'origine, par exemple it1 qui pointait vers un élément dans 'a1' avec la valeur 2 // pointe toujours vers le même élément, bien que cet élément ait été déplacé dans 'a2'. }
Sortie :
{ 1 2 3 } { 4 5 } 2 5 1 4
{ 4 5 } { 1 2 3 } 2 5 1 4
Voir aussi
|
(C++11)
|
spécialise l'algorithme
std::swap
(modèle de fonction) |