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 ループで右辺値参照 ( ) を使用する利点は何ですか? どのような場合にこのスタイルを使用する必要がありますか?