C++ の範囲ベースの for ループはインデックスの順序を保持しますか? 質問する

C++ の範囲ベースの for ループはインデックスの順序を保持しますか? 質問する

C++11 で、ベクトルに対して範囲ベースの for ループを使用すると、反復順序が保証されますか?

つまり、次のコード ブロックは同じ出力を生成することが保証されていますか?

vector<T> output;
vector<U> V;
for( auto v: V) output.push_back(f(v));

for(int i =0; i < V.size(); ++i) output.push_back(f(V[i])); 

そうでない場合は、、などvectorでしょうかmap?

ベストアンサー1

はい、2つのコードは同じ動作をすることが保証されています。標準へのリンクはありませんが、見ることができます。ここ引用します:You can read that as "for all x in v" going through starting with v.begin() and iterating to v.end().

おすすめ記事