<iterator>

反復子のプリミティブ、定義済みの反復子とストリーム反復子、およびサポート テンプレートをいくつか定義します。 定義済み反復子には、挿入アダプターとリバース アダプターが含まれます。 挿入反復子アダプターのクラスには、フロント、バック、汎用の 3 つがあります。 これには、コンテナーのメンバー関数の反復子が提供する上書きセマンティクスではなく、挿入セマンティクスが用意されています。

#include <iterator>

解説

反復子はポインターを一般化したもので、C++ プログラムが一貫した方法でさまざまなデータ構造を操作できるように要件が抽象化されています。 反復子は、コンテナーとジェネリックなアルゴリズムの仲介として機能します。 特定のデータ型を操作するのではなく、反復子の型で指定されている範囲を操作するようにアルゴリズムが定義されます。 そして、反復子の要件を満たすすべてのデータ構造をアルゴリズムで操作できます。 反復子には 5 つの種類またはカテゴリがあり、それぞれが独自の一連の要件と、結果として生じる機能を持ちます。

  • 出力: 前方移動。値を格納できますが、取得できません。ostream および inserter によって指定されます。

  • 入力: 前方移動。値を取得できますが、格納できません。istream によって指定されます。

  • 前方: 前方移動。値を格納および取得できます。

  • 双方向: 前方/後方移動。値を格納および取得できます。list、set、multiset、map、および multimap によって指定されます。

  • ランダム アクセス: 任意の順序でアクセスされる要素。値を格納および取得できます。vector、deque、string、および array によって指定されます。

より多くの要件を持ち、より強力に要素にアクセスできる反復子が、要件の少ない反復子の代わりに使用される場合があります。 たとえば、前方反復子が呼び出された場合は、ランダム アクセス反復子が代わりに使用される可能性があります。

Visual Studio では、C++ 標準ライブラリの反復子に、チェックを行う反復子とチェックを行わない反復子のさまざまなデバッグ モードの状況をサポートする拡張機能が追加されました。 詳細については、「安全なライブラリ: C++ 標準ライブラリ」を参照してください。

関数

advance

指定された位置の番号によって反復子をインクリメントします。

back_inserter

指定されたコンテナーの後ろに要素を挿入できる反復子を作成します。

begin

指定されたコンテナーの最初の要素への反復子を取得します。

cbegin

指定されたコンテナーの最初の要素への定数反復子を取得します。

cend

指定されたコンテナーの最後の要素の後ろにある要素への定数反復子を取得します。

distance

2 つの反復子によってアドレス指定された位置の間のインクリメント数を決定します。

End

指定されたコンテナーの最後の要素の後ろにある要素への反復子を取得します。

front_inserter

指定されたコンテナーの前に要素を挿入できる反復子を作成します。

の挿入演算子です。

指定された挿入ポイントにあるコンテナーに新しい要素を追加する反復子アダプター。

make_checked_array_iterator

他のアルゴリズムで使用できる checked_array_iterator を作成します。

注意

この関数は、標準 C++ ライブラリの Microsoft 拡張機能です。この関数を使用して実装されるコードは、Microsoft 拡張機能をサポートしない C++ 標準ビルド環境には移植できません。

make_move_iterator

提供された反復子を含む移動反復子を、格納された基本反復子としてを返します。

make_unchecked_array_iterator

他のアルゴリズムで使用できる unchecked_array_iterator を作成します。

注意

この関数は、標準 C++ ライブラリの Microsoft 拡張機能です。この関数を使用して実装されるコードは、Microsoft 拡張機能をサポートしない C++ 標準ビルド環境には移植できません。

next

指定された回数を繰り返し、新しい反復子の位置を返します。

prev

指定された回数を逆方向に繰り返し、新しい反復子の位置を返します。

演算子

operator!=

演算子の左側の反復子オブジェクトが右側の反復子オブジェクトと等しくないかどうかを調べます。

operator==

演算子の左側の反復子オブジェクトが右側の反復子オブジェクトと等しいかどうかを調べます。

operator<

演算子の左側の反復子オブジェクトが右側の反復子オブジェクトより小さいかどうかを調べます。

operator<=

演算子の左側の反復子オブジェクトが右側の反復子オブジェクト以下かどうかを調べます。

operator>

演算子の左側の反復子オブジェクトが右側の反復子オブジェクトより大きいかどうかを調べます。

operator>=

演算子の左側の反復子オブジェクトが右側の反復子オブジェクト以上かどうかを調べます。

operator+

反復子にオフセットを追加し、新しいオフセット位置に挿入された要素をアドレス指定する新しい reverse_iterator アドレスを返します。

operator-

ある反復子を別の反復子から減算し、その差異を返します。

クラス

back_insert_iterator

このテンプレート クラスは、出力反復子オブジェクトを表します。 このクラスは型 Container のコンテナーに要素を挿入します。これには、コンテナーと呼ばれる、格納された保護 pointer オブジェクトを介してアクセスします。

bidirectional_iterator_tag

双方向反復子を表す iterator_category 関数の戻り値の型を提供するクラス。

checked_array_iterator

チェックを行うランダム アクセス反復子を使用して配列にアクセスするクラス。

注意

このクラスは、標準 C++ ライブラリの Microsoft 拡張機能です。この関数を使用して実装されるコードは、Microsoft 拡張機能をサポートしない C++ 標準ビルド環境には移植できません。

forward_iterator_tag

前方反復子を表す iterator_category 関数の戻り値の型を提供するクラス。

front_insert_iterator

このテンプレート クラスは、出力反復子オブジェクトを表します。 このクラスは型 Container のコンテナーに要素を挿入します。これには、コンテナーと呼ばれる、格納された保護 pointer オブジェクトを介してアクセスします。

input_iterator_tag

入力反復子を表す iterator_category 関数の戻り値の型を提供するクラス。

insert_iterator

このテンプレート クラスは、出力反復子オブジェクトを表します。 このクラスは型 Container のコンテナーに要素を挿入します。これには、コンテナーと呼ばれる、格納された保護 pointer オブジェクトを介してアクセスします。 また、iter という Container::iterator クラスの保護された iterator オブジェクトも格納します。

istream_iterator

このテンプレート クラスは、入力反復子オブジェクトを表します。 このクラスは、入力ストリームから Ty クラスのオブジェクトを抽出します。これには、basic_istream<Elem, Tr> への型 pointer の、格納されたオブジェクトを介してアクセスします。

istreambuf_iterator

このテンプレート クラスは、入力反復子オブジェクトを表します。 このクラスは、出力ストリーム バッファーに Elem クラスの要素を挿入します。これには、basic_streambuf<Elem, Tr> への型 pointer の、格納されたオブジェクトを介してアクセスします。

iterator

このテンプレート クラスは、すべての反復子の基本型として使用されます。

iterator_traits

同じ方法で参照できるように、別の反復子の型に関連付けられているクリティカルな型を指定するテンプレート ヘルパー クラス。

move_iterator

move_iterator オブジェクトには、型 RandomIterator のランダム アクセス反復子が格納されています。 これは、逆参照された場合を除いて、ランダム アクセス反復子と同じように動作します。 operator* の結果は value_type&&: に暗黙的にキャストされ、rvalue reference が作成されます。

ostream_iterator

このテンプレート クラスは、出力反復子オブジェクトを表します。 このクラスは、出力ストリームに Type クラスのオブジェクトを挿入します。これには、basic_ostream<Elem, Tr> への型 pointer の、格納されたオブジェクトを介してアクセスします。

ostreambuf_iterator Class

このテンプレート クラスは、出力反復子オブジェクトを表します。 このクラスは、出力ストリーム バッファーに Elem クラスの要素を挿入します。これには、basic_streambuf<Elem, Tr> への型 pointer の、格納されたオブジェクトを介してアクセスします。

output_iterator_tag

出力反復子を表す iterator_category 関数の戻り値の型を提供するクラス。

random_access_iterator_tag

ランダム アクセス反復子を表す iterator_category 関数の戻り値の型を提供するクラス。

reverse_iterator

このテンプレート クラスは、逆方向でのみランダム アクセス反復子のように動作するオブジェクトを表します。

unchecked_array_iterator

チェックを行わないランダム アクセス反復子を使用して配列にアクセスするクラス。

注意

このクラスは、標準 C++ ライブラリの Microsoft 拡張機能です。この関数を使用して実装されるコードは、Microsoft 拡張機能をサポートしない C++ 標準ビルド環境には移植できません。

参照

関連項目

C++ 標準ライブラリ内のスレッド セーフ

標準テンプレート ライブラリ

その他の技術情報

C++ 標準ライブラリのヘッダー ファイル