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_range
时 concat_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...> 时定义。代表:
|
iterator_concept
|
|
value_type
|
/*concat-value-t*/<maybe-const <Const, Views>...>
|
difference_type
|
ranges::common_type_t<ranges::range_difference_t< |
数据成员
成员 | 定义 |
parent_ (私有)
|
maybe-const <Const, ranges::concat_view>* 类型的指向父视图的指针(仅用于阐述的成员对象*) |
base-iter it_ (私有)
|
变体式对象,持有到当前视图的迭代器 (仅用于阐述的成员对象*) |
成员函数
构造迭代器 (公开成员函数) | |
访问元素 (公开成员函数) | |
按索引访问元素 (公开成员函数) | |
推进或减小底层迭代器 (公开成员函数) | |
如果 it_ 是当前视图的末尾,则将 it_ 替换为下一个视图的起始 (仅用于阐述的成员函数*) | |
减少 it_ 使其指向前一个位置 (仅用于阐述的成员函数*) | |
按给定偏移量推进当前位置 (仅用于阐述的成员函数*) | |
按给定值减少当前位置 (仅用于阐述的成员函数*) |
非成员函数
比较底层迭代器 (函数) | |
(C++26) |
实施迭代器算术 (函数) |
(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]
- 26.7.18.3 Class template