名稱空間
變體
操作

iter_swap(ranges::concat_view::iterator)

來自 cppreference.com
< cpp‎ | ranges‎ | concat view‎ | iterator
 
 
範圍庫 (Ranges library)
範圍介面卡 (Range adaptors)
 
 
friend constexpr void iter_swap( const /*iterator*/& x, const /*iterator*/& y )
    noexcept( /* see description */ ) requires ( /* see description */ );
(C++26 起)

交換 xy 的底層迭代器所指向的物件。等價於 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)
交換兩個可解引用物件所引用的值
(定製點物件)[編輯]
交換兩個迭代器所指向的元素
(函式模板) [編輯]