std::iter_swap(std::reverse_iterator)
来自cppreference.com
| |
(C++20 起) | |
交换两个调整后的底层迭代器所指向的元素。
等价于 auto tmp_x = x.base();auto tmp_y = y.base();ranges::iter_swap(--tmp_x, --tmp_y);。
此函数模板对常规的无限定或有限定查找不可见,而只能在 std::reverse_iterator<Iter> 为实参的关联类时由实参依赖查找找到。
参数
| x, y | - | 要交换元素的逆向迭代器 |
复杂度
常数。
异常
noexcept 说明:
noexcept( std::is_nothrow_copy_constructible_v<Iter> && std::is_nothrow_copy_constructible_v<Iter2> && noexcept(ranges::iter_swap(--std::declval<Iter&>(), --std::declval<Iter2&>())) )示例
运行此代码
#include <iostream>
#include <iterator>
#include <list>
#include <vector>
int main()
{
std::vector v{1, 2, 3};
std::list l{4, 5, 6};
std::reverse_iterator<std::vector<int>::iterator> r1{v.rbegin()};
std::reverse_iterator<std::list<int>::iterator> r2{l.rbegin()};
std::cout << *r1 << ' ' << *r2 << '\n';
iter_swap(r1, r2); // 实参依赖查找
std::cout << *r1 << ' ' << *r2 << '\n';
}
输出:
3 6
6 3
参阅
| 交换两个对象的值 (函数模板) | |
| 交换两个范围的元素 (函数模板) | |
| 交换两个迭代器所指向的元素 (函数模板) | |
(C++20) |
交换两个可解引用对象所引用的值 (定制点对象) |
(C++20) |
交换两个底层迭代器所指向的对象 (函数模板) |