Aralık tabanlı döngülerin bazı örneklerini okurken iki ana yol önerirler 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
}
veya
for (auto x : vec)
{
// Value of x is copied from an item of vec
// We can not change vec's items by changing x
}
İyi.
vec
Öğeleri değiştirmemize gerek olmadığında , IMO, Örnekler ikinci sürümü (değere göre) kullanmanızı önerir. Neden const
referanslar bir şey önermiyoruz (En azından ben doğrudan bir öneri bulamadık):
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
}
Daha iyi değil mi? Bu yinelemede, her yinelemede gereksiz bir kopyadan kaçınmıyor const
mu?
const auto &x
üçüncü tercihinize eşdeğer olduğuna dikkat edilmelidir .