Share via


反復子

STL の機能は反復子に機能するシーケンスとさまざまなアルゴリズム間を仲介するを広範囲に使用します。反復子の種類 (または) プレフィックスの名前はその型に必要な反復子カテゴリを示します。増加する機能の順序でカテゴリは次の方法で次に示します :

  • 出力。出力反復子 X はの値 V に格納されている間接だけを持つことができます。その場合として次のストアの前に (*XC++ V=)(*X = VC++X)インクリメントする (*X = VX++)。

  • 入力します。入力反復子 X はシーケンスの末尾を示す単一値を表すことができます。入力反復子がシーケンス終端の値に等しいするとその値 V によって間接アクセスがいくつでも格納できます V = (*)X。シーケンスにおける次の値または末尾に移行するにはC++X のようにXC++またはインクリメントします V = (*X++)。入力反復子のコピーをインクリメントし他のコピーが安全と比較するか逆参照または後でインクリメントできません。

  • 進みます。前方反復子 X が書き込み用の出力反復子では読み取ることの入力反復子の代わりに使用できます。ただし読み取りできます。V され前方反復子によってによって X = (*) V を作成 X) *=。またそれぞれが個別に逆参照されインクリメントできる前方反復子の複数のコピーを作成できます。

  • 双方向。双方向の反復子 X は前方反復子の代わりに使用できます。ただしとして双方向の反復子をデクリメントします --XX--または V = (*X--)。

  • ランダム アクセスします。ランダム アクセス反復子 X は双方向の反復子の代わりに使用できます。オブジェクト ポインターであるかランダム アクセス反復子の整数同じ操作を実行できます。N では整数のオブジェクトx[入力]Nx + Nx を作成できます。 -N と N + X。

オブジェクト ポインターがランダム アクセス反復子またはそのほかの反復子の場所が取得できることに注意してください。すべての反復子に割り当てるかコピーできます。これらの値には参照によって軽量なオブジェクトであると解釈され頻繁に渡されを返します。有効な反復子で発生した場合前に説明した操作はいずれも例外をスローできない点にも注意してください。

反復子カテゴリの階層構造は3 種類のシーケンスを表示してまとめることができます。シーケンスへの書き込み専用アクセスではを使用できます :

output iterator
   -> forward iterator
   -> bidirectional iterator
   -> random-access iterator

右向きの矢印これは「置き換えることができます」。出力反復子を使用するアルゴリズムが前方反復子など別の方法を適切に使用する必要があります。

シーケンスへの読み取り専用アクセスする場合はを使用して :

input iterator
   -> forward iterator
   -> bidirectional iterator
   -> random-access iterator

入力反復子では一部のカテゴリの最も信頼性の低い (この場合は。

最後にシーケンス内の読み取り / 書き込みアクセスする場合はを使用できます :

forward iterator
   -> bidirectional iterator
   -> random-access iterator

オブジェクトのポインターはランダム アクセス反復子として常に実行すると指定したシーケンスに対する適切な読み取り / 書き込みアクセスをサポートする反復子のすべてのカテゴリとして使用できます。

オブジェクト ポインター以外の反復子 Iterator は特化 iterator_traits<Iterator> で必要なメンバー型を定義する必要があります。これらの要件がパブリックな基本クラスから 反復子 ことを Iterator を取得することで満たすことができることに注意してください。

反復子の 「」代数この処理は標準テンプレート ライブラリそのほかすべての基本的です。各反復子カテゴリの前提と制限を理解することが重要で反復子はSTL コンテナーおよびアルゴリズムによってどのように使用されるかを確認します。

[!メモ]

またSTL コレクションを反復処理するために 各について、 を使用できます。詳細については、「方法: それぞれのの STL のコレクションを反復処理します」を参照してください。

Visual C++ はチェックを行う反復子とコンテナーの境界を上書きしないようにデバッグの反復子を提供します。詳細については、「チェックを行う反復子」および「デバッグの反復子のサポート」を参照してください。

参照

関連項目

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

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