C++ で範囲ベースの for ループを使用する方法

C De Fan Tongbesuno For Rupuwo Shi Yongsuru Fang Fa



C++ プログラミング言語の 範囲ベースの for ループ は、C++11 で最初に導入された比較的最近の機能です。 範囲ベースの for ループ 範囲でループを実行します。これらは、配列、ベクトル、マップ、セット、さらには必要な操作を実装するユーザー定義の型など、イテレータを持つ任意のコンテナーで動作します。

範囲ベースの for ループの構文

範囲ベースの for ループ の構文は非常に単純です。これは、ループ変数、反復するコンテナーまたは範囲、およびコロンで構成されます。







ために ( range_declaration : range_expression ) ループ文



範囲宣言: range-declaration は、range-component 式の要素と同じ型の変数の宣言です。コンポーネントのタイプを自動的に判別するには 範囲式 、 auto キーワードが頻繁に使用されます。



範囲式: 要素のリストを表すすべての式は、 範囲式 .





ループ文: for ループの本体は、range_expression の最後まで繰り返す必要がある 1 つ以上のステートメントで構成されます。

範囲ベースの for ループを実行するメソッド

に使用できる 3 つの方法があります。 範囲ベースの for ループ .



方法 1: 配列を使用する

範囲ベースの for ループ このような配列を使用して実行できます。

#include
名前空間 std を使用します。

int メイン ( ) {
int numArray [ ] = { 6 7 8 9 10 } ;
ために ( int n : 数値配列 ) {
カウト << n << ' ' ;
}
戻る 0 ;
}

上記のコードでは、numArray という整数配列が初期化されました。次に、numArray の要素は、 範囲ベースの for ループ .

出力

方法 2: ベクトルを使用する

範囲ベースの for ループ このようなベクトルを使用して実行できます。

#include
#include <ベクター>
名前空間 std を使用します。
int メイン ( )
{
int x;
ベクター < 整数 > =で { 1 2 3 4 5 } ;
ために ( int x : v )
{
カウト << バツ << ' ' ;
}
戻る 0 ;
}

上記のコードでは、ベクトルと呼ばれる 初期化されました。ここで、ベクトル v の要素は、 範囲ベースの for ループ。

出力

方法 3: ループ内でコレクションを宣言する

範囲ベースの for ループ ループ内で宣言することもできます。実際の配列やベクトルと同様に動作します。

#include

名前空間 std を使用します。
int メイン ( ) {
ために ( int n : { 5 10 15 20 25 } ) {
カウト << n << ' ' ;
}
戻る 0 ;
}

上記のコードでは、コレクションはループ自体の中で宣言されてから出力されます。

出力

範囲ベースの for ループの長所と短所

範囲ベースの for ループ 従来よりも多くの利点があります ために 特にコンテナーを操作する場合は、いくつかの方法でループします。ループ変数はループ内で定義され、範囲が明示的に示されているため、コードがはるかに短くなり、理解しやすくなります。また、off-by-one エラーやその他のインデックス作成ミスを心配する必要がないため、より安全です。タイプやサイズに関係なく、あらゆるコンテナを使用できるため、適応性が高くなります。の 範囲ベースの for ループ にはいくつかの利点があります。そのうちの 1 つは、コードがよりクリーンで理解しやすくなることです。

範囲ベースの for ループ ただし、特定の制限があります。ループ変数は、実際の要素ではなく要素のコピーまたは参照であるため、コンテナーの要素を変更するために使用することはできません。全範囲が常に反復されるため、要素をスキップしたり、データの一部のみを反復したりすることはできません。

結論

範囲ベースの for ループ C++ プログラミング言語の強力で用途の広い機能です。従来の for ループと比較して、安全性と柔軟性が向上し、コンテナーを反復処理してコードを削減するための明確で読みやすいアプローチが提供されます。 範囲ベースの for ループ C++ プログラマーにとっては必須です。