std::experimental::ranges::Iterator
From cppreference.com
< cpp | experimental | ranges
| Defined in header <experimental/ranges/iterator> |
||
| template< class I > concept bool Iterator = |
(ranges TS) | |
Iterator コンセプトは、イテレータのコンセプト階層の基盤を形成します。すべてのイテレータは Iterator 要件を満たします。
[編集] 等価性保持
式が**等価性保持**であるとは、等しい入力に対して等しい出力を生成することを意味します。
- 式の入力は、そのオペランドで構成されます。
- 式の出力は、その結果と、式によって変更されたすべてのオペランド(存在する場合)で構成されます。
等価性保持が要求されるすべての式は、さらに**安定**である必要があります。同じ入力オブジェクトでそのような式の2回の評価は、これらの入力オブジェクトの明示的な介入的な変更がない限り、等しい出力を持ちます。
特に断りがない限り、requires-expression で使用されるすべての式は、等価性を保持し、安定であることが要求され、式の評価は定数でないオペランドのみを変更できます。定数のオペランドは変更してはいけません。
[編集] 注釈
Iterator 自体は、イテレータの逆参照とインクリメントの操作のみを指定します。ほとんどのアルゴリズムは、追加の操作を必要とします。たとえば
- イテレータとセンチネルの比較 (「
Sentinel」を参照)。 - イテレータからの値の読み取り (「
Readable」および「InputIterator」を参照)。 - イテレータへの値の書き込み (「
Writable」および「OutputIterator」を参照)。 - より豊富なイテレータ移動セット (「
ForwardIterator」、「BidirectionalIterator」、「RandomAccessIterator」を参照)。
-> auto&& 制約は、逆参照の結果型が void になれないことを意味します。