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 起)

交换两个底层迭代器(均以 it_ 代表)所指向的对象。等价于:

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_
);

MCVstd::conditional_t<Const, const Views, Views>requires子句 中的表达式等价于:

调用这个函数前,x.it_.valueless_by_exception()y.it_.valueless_by_exception() 必须都为 false。否则,其行为未定义。

此函数对常规的无限定有限定查找不可见,而只能在 concat_view::iterator<Const> 为实参的关联类时由实参依赖查找找到。

参数

x, y - iterators

返回值

(无)

异常

its 为类型 const ranges::iterator_t<MCV> 的相应左值的包。

noexcept 说明:  
noexcept(noexcept(ranges::swap(*x, *y)) && ... && noexcept(ranges::iter_swap(its, its)))

示例

参阅

(C++20)
交换两个可解引用对象所引用的值
(定制点对象)
交换两个迭代器所指向的元素
(函数模板)