std::ranges::concat_view<Views...>::iterator
< 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