La lecture de quelques exemples de gamme à base de boucles, ils suggèrent de deux manières principales1, 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
}
ou
for (auto x : vec)
{
// Value of x is copied from an item of vec
// We can not change vec's items by changing x
}
Bien.
Lorsque nous n'avons pas besoin de changer vec
articles, de l'OMI, des Exemples suggèrent d'utiliser la deuxième version (en valeur). Pourquoi ils n'ont pas de proposer quelque chose qui const
références (Au moins je n'ai pas trouvé toute suggestion directe):
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
}
N'est-il pas mieux? N'est-il pas d'éviter une copie redondante dans chaque itération alors que c'est un const
?