std::experimental::ranges::ForwardIterator
来自 cppreference.com
< cpp | experimental | ranges
定义于头文件 <experimental/ranges/iterator> 中 |
||
template< class I > concept bool ForwardIterator = |
(范围 TS) | |
ForwardIterator<I>
概念是对 InputIterator
的细化,它添加了相等比较和多遍保证。
对于前向迭代器,==
的定义域是相同底层序列上的迭代器,但相同类型的值初始化迭代器可以相互比较,并且应比较相等。
从前向迭代器到范围 [
i,
s)
中获取的指针和引用必须在 [
i,
s)
继续表示范围时保持有效。
设 a
和 b
是两个类型为 I
的可解引用迭代器。仅当以下情况成立时,ForwardIterator<I>
才满足:
- a == b 意味着 ++a == ++b;以及
- 表达式 ([](X x){ ++x; }(a), *a) 等同于 *a,即,增加
a
的副本对解引用a
的结果没有影响。
这被称为多遍保证。
[编辑] 注释
前向迭代器不能“储存”:它不能返回对自身内部对象的引用,因为这些引用会在前向迭代器被销毁时失效。