iter_swap(std::move_iterator)
Von cppreference.com
< cpp | iterator | move iterator
| template< std::indirectly_swappable<Iter> Iter2 > friend constexpr void iter_swap( const move_iterator& x, |
(seit C++20) | |
Tauscht die Objekte, auf die zwei zugrundeliegende Iteratoren zeigen.
Entspricht ranges::iter_swap(x.base(), y.base());.
Diese Funktionsschablone ist für normale unqualifizierte oder qualifizierte Suchvorgänge nicht sichtbar und kann nur durch argumentabhängige Suche gefunden werden, wenn std::move_iterator<Iter> eine zugeordnete Klasse der Argumente ist.
Inhalt |
[edit] Parameter
| x, y | - | Move-Iteratoren zu den zu tauschenden Elementen |
[edit] Komplexität
Konstant.
[edit] Ausnahmen
noexcept-Spezifikation:
noexcept(noexcept(ranges::iter_swap(x.base(), y.base())))
[edit] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <iterator> #include <string> #include <vector> int main() { std::vector<std::string> p{"AA", "EE"}, q{"ⱯⱯ", "ƎƎ"}; std::move_iterator<std::vector<std::string>::iterator> x = std::make_move_iterator(p.begin()), y = std::make_move_iterator(q.begin()); std::cout << *x << ' ' << *y << '\n'; iter_swap(x, y); // ADL std::cout << *x << ' ' << *y << '\n'; }
Ausgabe
AA ⱯⱯ ⱯⱯ AA
[edit] Siehe auch
| tauscht die Werte von zwei Objekten (Funktionsvorlage) | |
| Tauscht zwei Elementbereiche (Funktionstempelat) | |
| Tauscht die Elemente, auf die zwei Iteratoren zeigen (Funktionstempelat) | |
| (C++20) |
tauscht die von zwei dereferenzierbaren Objekten referenzierten Werte (Customization-Punkt-Objekt) |
| (C++20) |
tauscht die Objekte, auf die von zwei angepassten zugrunde liegenden Iteratoren gezeigt wird (Funktionstemplate) |