iter_swap(std::move_iterator)
From cppreference.com
< cpp | iterator | move iterator
| template< std::indirectly_swappable<Iter> Iter2 > friend constexpr void iter_swap( const move_iterator& x, |
(C++20以降) | |
2つの基底イテレータが指すオブジェクトを交換します。
ranges::iter_swap(x.base(), y.base());と同等です。
この関数テンプレートは、通常の修飾されていないまたは修飾された検索では見えず、std::move_iterator<Iter> が引数に関連付けられたクラスである場合にのみ、引数依存の名前探索によって見つけることができます。
目次 |
[編集] パラメータ
| x, y | - | 交換する要素へのムーブイテレータ |
[編集] 計算量
定数。
[編集] 例外
noexcept 指定:
noexcept(noexcept(ranges::iter_swap(x.base(), y.base())))
[編集] 例
このコードを実行
#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'; }
出力
AA ⱯⱯ ⱯⱯ AA
[編集] 関連項目
| 2つのオブジェクトの値を交換する (関数テンプレート) | |
| 2つの要素の範囲を交換する (関数テンプレート) | |
| 2つのイテレータが指す要素をスワップする (関数テンプレート) | |
| (C++20) |
2つの間接参照可能なオブジェクトが参照する値を交換する (カスタマイゼーションポイントオブジェクト) |
| (C++20) |
2つの調整された基礎となるイテレータが指すオブジェクトをスワップする (関数テンプレート) |