彼らは、2つの主要な方法を示唆している範囲基づいてループのいくつかの例読み出し1、2、3、4
std::vector<MyClass> vec;
for (auto &x : vec)
{
// x is a reference to an item of vec
// We can change vec's items by changing x
}
または
for (auto x : vec)
{
// Value of x is copied from an item of vec
// We can not change vec's items by changing x
}
上手。
vec
アイテムを変更する必要がない場合、IMO、例では2番目のバージョン(値による)の使用を提案しています。彼らがconst
参照するものを提案しない理由(少なくとも直接的な提案は見つかりませんでした):
for (auto const &x : vec) // <-- see const keyword
{
// x is a reference to an const item of vec
// We can not change vec's items by changing x
}
良くないですか?それがである間、それは各反復で冗長なコピーを避けませんconst
か?
const auto &x
3番目の選択と同等であることも指摘する必要があると思います。