4

重複の可能性:
範囲ベースの for ループでユニバーサル参照を使用する利点は何ですか?

a の要素を反復処理して読み取るには、次の C++11範囲ベースの for with withの使用法が正しいvector<int>と思います。auto

std::vector<int> v;
....
for (auto n : v)
{
   // Do something on n ...
   ....
}

コンテナーに格納されている要素が単純な整数ではなく、たとえば s のような「重い」ものである場合、範囲ベースの for + の正しい使用法でstd::stringそれらを反復処理することは次のとおりです。vector<string>auto

std::vector<std::string> v;
....
for (const auto& s : v)
{
   // Do something on s ...
   ....
}

を使用すると無駄なディープ コピーが回避され、ループ コードはベクターの内容を監視しconst &ているだけなので問題ありません。

これまでの私の理解は正しいですか?

autoここで、別の形式のin range-based for loops:を使用するコードを見ましたauto&&

for (auto&& elem : container)
  ....

この使用法は何に適していますか?&&範囲ベースの for ループで右辺値参照 ( ) を使用する利点は何ですか? どのような場合にこのスタイルを使用する必要がありますか?

4

0 に答える 0