Quelle est la bonne manière de l'aide de C++11 de gamme pour?

Quelle est la bonne manière de l'aide de C++11 de for?

Ce que la syntaxe doit être utilisé? for (auto elem : container),
ou for (auto& elem : container) ou for (const auto& elem : container)?
Ou une autre?

  • Même considération s'applique que pour les arguments de la fonction.
  • En fait, cela n'a que peu à voir avec la gamme pour les. La même chose peut être dit de toute auto (const)(&) x = <expr>;.
  • Cela a beaucoup à voir avec la gamme pour, bien sûr! Envisager un débutant qui voit plusieurs syntaxes et ne peut pas choisir le formulaire à utiliser. Le point de "Q&a" pour tenter de faire la lumière, et d'expliquer les différences de certains cas (et de discuter de cas qui compile bien, mais sont en quelque sorte des inefficace en raison inutile profonde des copies, etc.).
  • Pour autant que je suis concerné, cela a plus à voir avec auto, en général, qu'avec la gamme de base; vous pouvez parfaitement utiliser basés sur la plage, sans qu'aucune auto! for (int i: v) {} est parfaitement bien. Bien sûr, la plupart des points que vous soulevez dans votre réponse peut avoir plus à voir avec le type qu'avec auto... mais à partir de la question, il n'est pas clair d'où la douleur est à point. Personnellement, je vie pour la suppression des auto de la question; ou peut-être le rendre plus explicite le fait que si vous utilisez auto ou explicitement le nom, le type, la question est concentrée sur la valeur de référence.
  • Je suis ouvert pour modifier le titre ou de modifier la question sous quelque forme que peut faire plus clair... Encore une fois, mon objectif était de discuter de plusieurs options pour la gamme à base de syntaxes (montrer le code qui compile mais est inefficace, le code qui ne parvient pas à compiler, etc.) et en essayant d'offrir quelques conseils à quelqu'un (surtout au niveau débutant) en approchant de C++11 gamme à base de boucles.
  • Je comprends que (maintenant), ma seule suggestion est de ne pas utiliser auto. Lors de l'enseignement du nouveau matériel, il est plus facile d'enseigner les concepts à la fois. Vous pouvez ensuite ré-introduire auto plus tard dans la réponse (par exemple, dans votre dernier chapitre sur le générique de code).

InformationsquelleAutor Mr.C64 | 2013-04-10