C++11, varient en fonction de boucle: obtenir l'élément par valeur ou par référence à const

La lecture de quelques exemples de gamme à base de boucles, ils suggèrent deux principales façons Un, Deux, Trois, Quatre

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 éléments, 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 une const?

InformationsquelleAutor masoud | 2013-03-02