std::ranges::chunk_view<V>::outer-iterator
来自cppreference.com
< cpp | ranges | chunk view
class/*outer-iterator*/ | (C++23 起) (仅用于阐述*) | |
如果 V
实现 input_range
,则为 chunk_view::begin
的返回类型。
目录 |
[编辑]成员类型
成员类型 | 定义 |
iterator_concept | std::input_iterator_tag |
difference_type | ranges::range_difference_t<V> |
[编辑]数据成员
成员对象 | 定义 |
parent_ (私有) | 指向类型为 ranges::chunk_view* 的“父对象”的指针 (仅用于阐述的成员对象*) |
[编辑]成员函数
(C++23) | 构造迭代器 (公开成员函数) |
(C++23) | 移动赋值另一迭代器 (公开成员函数) |
(C++23) | 访问元素 (公开成员函数) |
(C++23) | 增加迭代器 (公开成员函数) |
[编辑]非成员函数
(C++23) | 比较迭代器与 default sentinel (函数) |
(C++23) | 计算剩余区块数量 (函数) |
[编辑]嵌套类
(C++23) | /*output-iterator*/ 的值类型 (公开成员类) |
[编辑]示例
运行此代码
#include <iostream>#include <iterator>#include <ranges>#include <sstream> int main(){conststd::string source{"ABCDEFGHIJ"}; auto letters =std::istringstream{source};auto chunks = std::ranges::istream_view<char>(letters)| std::views::chunk(4); for(auto outer_iter = chunks.begin(); outer_iter !=std::default_sentinel;++outer_iter){auto chunk =*outer_iter;// chunk 是 chunk_view::outer_iterator::value_type 类型的对象std::cout<<'[';for(auto inner_iter = chunk.begin(); inner_iter !=std::default_sentinel;++inner_iter)std::cout<<*inner_iter;std::cout<<"] ";}std::cout<<'\n'; // 使用范围 for 循环的相同输出auto letters2 =std::istringstream{source};auto chunks2 = std::ranges::istream_view<char>(letters2)| std::views::chunk(4);for(auto chunk : chunks2){std::cout<<'[';for(auto ch : chunk)std::cout<< ch;std::cout<<"] ";}std::cout<<'\n';}
输出:
[ABCD] [EFGH] [IJ] [ABCD] [EFGH] [IJ]
[编辑]引用
- C++23 标准(ISO/IEC 14882:2024):
- 26.7.28.3 Class chunk_view::outer-iterator [range.chunk.outer.iter]