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 constreferanslar 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 constmu?
const auto &xüçüncü tercihinize eşdeğer olduğuna dikkat edilmelidir .