std::forward_list<T,Allocator>:: swap
|
void
swap
(
forward_list
&
other
)
;
|
(seit C++11)
(bis C++17) |
|
|
void
swap
(
forward_list
&
other
)
noexcept
(
/* siehe unten */
)
;
|
(seit C++17)
(constexpr seit C++26) |
|
Tauscht den Inhalt des Containers mit dem von other aus. Löst keine Move-, Copy- oder Swap-Operationen für einzelne Elemente aus.
Alle Iteratoren und Referenzen bleiben gültig. Es ist nicht spezifiziert, ob ein Iterator, der den
end()
Wert in diesem Container hält, nach der Operation auf diesen oder den anderen Container verweisen wird.
Wenn
std::
allocator_traits
<
allocator_type
>
::
propagate_on_container_swap
::
value
true
ist, dann werden die Allokatoren durch einen unqualifizierten Aufruf der Nicht-Member-Funktion
swap
ausgetauscht. Andernfalls werden sie nicht ausgetauscht (und wenn
get_allocator
(
)
!
=
other.
get_allocator
(
)
, ist das Verhalten undefiniert).
Inhaltsverzeichnis |
Parameter
| other | - | Container, mit dem die Inhalte ausgetauscht werden sollen |
Exceptions
|
(keine) |
(bis C++17) |
|
noexcept
Spezifikation:
noexcept
(
std::
allocator_traits
<
Allocator
>
::
is_always_equal
::
value
)
|
(seit C++17) |
Komplexität
Konstante.
Beispiel
#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'; // Beachten Sie, dass nach dem Swap die Iteratoren und Referenzen mit ihren // ursprünglichen Elementen verbunden bleiben, z.B. it1, das auf ein Element in 'a1' mit Wert 2 // zeigte, zeigt weiterhin auf dasselbe Element, obwohl dieses Element in 'a2' verschoben wurde. }
Ausgabe:
{ 1 2 3 } { 4 5 } 2 5 1 4
{ 4 5 } { 1 2 3 } 2 5 1 4
Siehe auch
|
(C++11)
|
spezialisiert den
std::swap
Algorithmus
(Funktions-Template) |