配列や連結リストなど、複数の要素が集まったデータ構造に対して、各要素への反復処理を抽象化したオブジェクトやメソッド、関数や文法機能といったもののことです。反復処理を抽象化することで、対象のデータ構造がどのようなかたちのものであっても(要素が連続的に並んでいる、ポインタなどで非連続的につながれているなどの違い)、同様のコードが使えるようになります。次のコードは架空のプログラミング言語での例です。何らかのデータ構造で表現された要素の集まりです。よって間接参照できるようにします。内側の処理を終えると、次の要素を選ぶことから再開します。末尾の要素の処理を終えるまで繰り返されます。ような連結リストだったとしても、ほかのデータ構造であったとしても、上記のコードがそのまま使用できるはずです。中に、イテレータが登場します。おけるイテレータは、多数あるコンテナ(データ構造)と、多数あるアルゴリズム(コンテナを操作する関数)とのあいだをつなぎ、両者の依存性を小さく抑える(組み合わせのパターン数を抑える)役割をもっています。イテレータに関しては、C++編【標準ライブラリ】第14章で解説しています。いう値をもった要素を探しています。あらわすコンテナの種類が変更されても、そのままコンパイルできる可能性が高いものです。返すものがイテレータです。イテレータの型は、コンテナの種類によって異なります。ためのイテレータは別の型です。イテレータそのものが共通化されているわけではありません。イテレータは、対象のコンテナの特性に応じてカテゴリという概念で分類されており、カテゴリごとに可能な操作が定義されています。カテゴリが同じなら、イテレータの型は違っていても同じ操作ができます。カテゴリには階層的な関係性があり、上位のカテゴリで行える操作は、下位のカテゴリでも行えるようになっています。詳細は、C++編【標準ライブラリ】第14章を参照してください。例に対応するものとして、範囲for文があります。