名前付き要件:LegacyIterator
提供: cppreference.com
LegacyIterator 要件はコンテナの要素を識別および巡回するために使用できる型を表します。
LegacyIterator は他のイテレータ型 LegacyInputIterator、 LegacyOutputIterator、 LegacyForwardIterator、 LegacyBidirectionalIterator および LegacyRandomAccessIterator によって使用される要件の基礎集合です。 イテレータはポインタの抽象化として考えることができます。
目次 |
[編集]要件
以下の内容を満たす場合、型 It
は LegacyIterator を満たします。
- 型
It
が CopyConstructible を満たす。 - 型
It
が CopyAssignable を満たす。 - 型
It
が Destructible を満たす。 - 型
It
の左辺値が Swappable を満たす。 - std::iterator_traits<It> がメンバ型
value_type
、difference_type
、reference
、pointer
およびiterator_category
を持つ。
さらに、
It
型の左辺値r
が与えられたとき、以下の式が有効でなければならず、規定された効果を持たなければなりません。
式 | 戻り値の型 | 事前条件 |
---|---|---|
*r | 未規定 | r が逆参照可能である (下を参照) |
++r | It& | r がインクリメント可能である (式 ++r の動作が定義されている) |
[編集]逆参照可能なイテレータ
式 *i の動作が定義されているイテレータは逆参照可能と呼ばれます。
以下の場合、イテレータは逆参照可能でありません。
- 終端イテレータ (配列の最後の要素の次のポインタを含む) または先頭より前のイテレータである。 そのようなイテレータは特定の実装では逆参照可能かもしれませんが、そういったことをライブラリが仮定することはありません。
- 単数イテレータ、つまり、いかなるシーケンスにも紐付いていないイテレータである。 ヌルポインタやデフォルト構築されたポインタ (不定値を持つ) は単数です。
- 参照するシーケンスに対するイテレータを無効化する操作によって無効化されたイテレータである。
コンセプトstd::iterator_traits の定義のために、以下の説明専用コンセプトが定義されます。
ただし、説明専用コンセプト | (C++20以上) |
[編集]関連項目
その型のオブジェクトがインクリメント可能かつ逆参照可能であることを指定します (コンセプト) |