名前付き要件: LegacyInputIterator
LegacyInputIterator はその指す先の要素から読み込むことができる LegacyIterator です。 LegacyInputIterator はシングルパスアルゴリズムに対する有効性を保証するだけです。 LegacyInputIterator i がいったんインクリメントされると、その以前の値の全てのコピーは無効化される可能性があります。
要件
以下の内容を満たす場合、型 It は LegacyInputIterator を満たします。
- 型
Itが LegacyIterator を満たす。 - 型
Itが EqualityComparable を満たす。
さらに、
Itまたはconst It型の値i,jstd::iterator_traits<It>::referenceによって表される型referencestd::iterator_traits<It>::value_typeによって表される型value_type
が与えられたとき、以下の式が有効でなければならず、指定された効果を持たなければなりません。
| 式 | 戻り値 | 同等な式 | 注釈 |
|---|---|---|---|
i != j |
bool に文脈的に変換可能 |
!(i == j) |
事前条件: (i, j) が == の領域内である。
|
*i |
reference、value_type に変換可能 |
i == j かつ (i, j) が == の領域内であれば、これは *j と同等です。 |
事前条件: 式 |
i->m |
(*i).m |
事前条件: i が逆参照可能。
| |
++i |
It& |
事前条件: 事後条件: 事後条件: | |
(void)i++ |
(void)++i |
||
*i++ |
value_type に変換可能。
|
value_type x = *i; ++i; return x; |
ノート
「== の領域内である」は、2つのイテレータの間で等しさの比較が定義されているという意味です。 入力イテレータの場合、等しさの比較はすべての値に対して定義されている必要はなく、 == の領域内である値の集合は時間と共に変化しても構いません。
LegacyForwardIterator でない入力イテレータに対する reference 型は、参照型である必要はありません。 入力イテレータの逆参照はプロキシオブジェクトを返したり、 (std::istreambuf_iterator の場合のように) value_type それ自身を値返ししても構いません。
コンセプトstd::iterator_traits の定義のために、以下の説明専用コンセプトが定義されます。 <tbody> </tbody>
説明専用コンセプト |
(C++20以上) |
関連項目
| 型が入力イテレータである、つまり、その参照先の値を読み込むことができ、前置または後置インクリメントができることを表します (コンセプト) |