std::ranges::concat_view<Views...>::iterator

来自cppreference.com
< cpp‎ | ranges‎ | concat view
 
 
范围库
范围适配器
 
 
template< bool Const >
class /*iterator*/
(C++26 起)
(仅用于阐述*)

concat_view::begin 的返回类型,以及当最末底层视图 View...[sizeof...(Views) - 1] 是一个 common_rangeconcat_view::end 的返回类型。

const 限定的重载返回类型为 /*iterator*/<true>。非 const 限定的重载返回类型为 /*iterator*/<false>

成员类型

成员 定义
base-iter (私有) 包含指向当前视图的各迭代器的变体式对象,等价于 std::variant<ranges::iterator_t<maybe-const <Const, Views>...>
(仅用于阐述的成员类型*)
iterator_category
(有条件提供)
仅当实现了 /*all-forward*/<Const, Views...> 时定义。代表:
否则,令 Cs 代表类型包
std::iterator_traits<ranges::iterator_t<
    std::conditional_t<Const, const Views, Views>>>::iterator_category...
iterator_concept
value_type /*concat-value-t*/<maybe-const <Const, Views>...>
difference_type

ranges::common_type_t<ranges::range_difference_t<maybe-const <Const, Views>>...>

数据成员

成员 定义
parent_ (私有) maybe-const <Const, ranges::concat_view>* 类型的指向父视图的指针
(仅用于阐述的成员对象*)
base-iter it_ (私有) 变体式对象,持有到当前视图的迭代器
(仅用于阐述的成员对象*)

成员函数

构造迭代器
(公开成员函数)
访问元素
(公开成员函数)
按索引访问元素
(公开成员函数)
推进或减小底层迭代器
(公开成员函数)
如果 it_ 是当前视图的末尾,则将 it_ 替换为下一个视图的起始
(仅用于阐述的成员函数*)
减少 it_ 使其指向前一个位置
(仅用于阐述的成员函数*)
按给定偏移量推进当前位置
(仅用于阐述的成员函数*)
按给定值减少当前位置
(仅用于阐述的成员函数*)

非成员函数

比较底层迭代器
(函数)
实施迭代器算术
(函数)
(C++26)
将底层迭代器的解引用结果转型为其关联的右值引用类型
(函数)
(C++26)
交换两个底层迭代器所指向的对象
(函数)

示例

基础版本可以在 Compiler Explorer 测试。

#include <iostream>
#include <iterator>
#include <ranges>
 
int main()
{
    namespace views = std::views;
    static constexpr int p[]{1, 2, 3};
    static constexpr auto e = {4, 5};
    auto t = views::iota(6, 9);
    auto cat = views::concat(p, e, t);
    auto dog = views::concat(cat, cat);
    for (auto i{dog.begin()}; i != std::default_sentinel; ++i)
        std::cout << *i << ' ';
    std::cout << '\n';
}

输出:

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

引用

  • C++26 标准(ISO/IEC 14882:2026):
  • 26.7.18.3 Class template concat_view::iterator [range.concat.iterator]

参阅