Foreach文
Perlでの構文は以下のようになる。
foreach 変数 (リスト) { 文 }
このループはだいたい次のような手順で実行される。
変数にリストの中のある要素への参照を代入する。
文を実行する。
全要素を参照し終わっていない場合は、変数に「次の要素」を代入して文の実行へ戻る。
ここで、線形リストや配列など要素の順序が決まっているものは、通常その順序でループが実行されるので、この場合以下とほぼ同様である。
for ( my $i = 0; $i < @list; $i++ ) { 変数 = $list[$i]; 文 }
ただし、ハッシュテーブルによって実装された連想配列など、要素の順序関係が決められていない「コレクション」の場合、その参照される順序は不定である。
C++11にて、範囲ベースの for ループが言語仕様として追加されている。
for (型 変数 : コレクション) { 文 }
上記で「コレクション」と記した箇所には、配列のほか、std::vectorやstd::arrayのような標準ライブラリにおいてコンテナに分類される各種のオブジェクトなども使用できる。
そのほか、1998年の標準規格化当初からC++標準ライブラリにfor_eachアルゴリズム(関数テンプレート)が存在する。
関数オブジェクト = std::for_each( 先頭イテレータ, 末尾イテレータ, 関数オブジェクト );
C++11では、C#同様に型推論およびラムダ式を組み合わせることで、上記の構文が威力を発揮するようになる。
なお、C++/CLI言語およびMicrosoft Visual C++ 2005以降の独自拡張機能では、for each文を使用できるが、不安定で正常に動作しない場合がある。また、これはC++11における範囲ベース for ループとは互換性がない。
for each (変数 in コレクション) { 文 }
foreach (変数 in コレクション) { 文 }