66

C++11 では、次のようにいくつかのコンテナーを反復処理できます。

for(auto i : vec){
   std::cout << i << std::endl;
}

しかし、これは不必要に-必要に、の値を出力するだけでよいのでvec-のコピーを作成することを知っているvecので、代わりに次のことができます:

for(auto &i : vec){
   std::cout << i << std::endl;
}

vecしかし、の値が決して変更されず、const-correctness に準拠していることを確認したいので、次のことができます。

for(const auto &i : vec){
   std::cout << i << std::endl;
}

したがって、私の質問は次のとおりです。あるコンテナーの値のみを確認する必要がある場合 ( EDIT : の各要素)const auto &iの余分なコピーを持たないことで効率が向上するため、最後のループ ( ) が常に優先されるのではないでしょうか?vec

私は開発中のプログラムを持っていますが、この変更を全体的に行うことを検討しています。これは、効率が重要であるためです (最初に C++ を使用している理由)。

4

3 に答える 3