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( /* see description */ ) requires ( /* see description */ ); |
(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) |
交換兩個可解引用物件所引用的值 (定製點物件) |
交換兩個迭代器所指向的元素 (函式模板) |