Python の経験がある者として、このfor ( : )
ループを初めて見たときは非常に驚きました。
vector<int> vec = {1,2,3,4};
int sum = 0;
for (int i : vec){
sum += i;
}
//sum is now 10
これは非常に便利な構造であり、値のインデックスを複数回必要としないときはいつでも使用する必要があります。
しかし、今日、次のように使用されるループもあることを発見しましたfor each ( in )
。
vector<int> vec = {1,2,3,4};
int sum = 0;
for each (int i in vec){
sum += i;
}
//sum is now 10
興味深いことに、2 番目の Google の結果は、通常の C++ リファレンス Web サイトではなく、ほとんどが Microsoft に関連しています。
これら 2 つのループの違いは何ですか?
ベストアンサー1
1つ目は範囲ベースの for ループこれは言語の C++11 機能です。これにより、begin() および end() メソッドが使用可能な範囲 (メンバーまたは非メンバー) または配列に対して、そのように反復処理を行うことができます。
2 つ目は Microsoft 固有の構文で、C++/CLI で使用できますが、C++ でも使用できます。配列またはコレクションを反復処理できます。この構文の使用は推奨されておらず、範囲ベースの for ループを使用することをお勧めします。それぞれについて。