iter_swap(ranges::concat_view::iterator)
来自cppreference.com
< cpp | ranges | concat view | iterator
friend constexpr void iter_swap( const /*iterator*/& x, const /*iterator*/& y ) noexcept( /* 见描述 */ ) requires ( /* 见描述 */ ); | (C++26 起) | |
交换 x 和 y 的各自的底层迭代器指向的对象。等价于 std::visit
(
[&](const auto& it1, const auto& it2)
{
if constexpr (std::is_same_v<decltype(it1), decltype(it2)>)
ranges::iter_swap(it1, it2);
else
ranges::swap(*x, *y);
},
x.it_
,
y.it_
);
requires 子句中的表达式等价于 std::swappable_with<std::iter_reference_t</*iterator*/>,
std::iter_reference_t</*iterator*/>> &&
(... && std::indirectly_swappable<ranges::iterator_t<maybe-const
<Const, Views>>>) 。
如果 x.it_
.valueless_by_exception() || y.it_
.valueless_by_exception() 是 true,那么行为未定义。
此函数对常规的无限定或有限定查找不可见,而只能在 concat_view::iterator
<Const> 为实参的关联类时由实参依赖查找找到。
参数
x, y | - | 迭代器 |
异常
设 its 为包含左值的包,其中每个值都具有 const ranges::iterator_t<maybe-const
<Const, Views>> 中对应的类型。
noexcept 说明:
noexcept(noexcept(ranges::swap(*x, *y)) && ... && noexcept(ranges::iter_swap(its, its)))
示例
本节未完成 原因:暂无示例 |
参阅
(C++20) | 交换两个可解引用对象所引用的值 (定制点对象) |
交换两个迭代器所指向的元素 (函数模板) |