Maison > développement back-end > C++ > Comment choisir la bonne syntaxe de boucle « for » basée sur une plage C 11 ?

Comment choisir la bonne syntaxe de boucle « for » basée sur une plage C 11 ?

Patricia Arquette
Libérer: 2024-12-16 05:55:09
original
498 Les gens l'ont consulté

How to Choose the Right C  11 Range-Based `for` Loop Syntax?

Comprendre la syntaxe for basée sur une plage en C 11

Les boucles for basées sur une plage en C 11 fournissent une syntaxe simplifiée pour itérer sur les conteneurs. La syntaxe varie selon que vous comptez observer ou modifier les éléments du conteneur.

Pour observer les éléments

Pour observer les éléments sans les modifier, la syntaxe recommandée est :

for (const auto& elem : container)
Copier après la connexion

Cette syntaxe capture les éléments par référence const, évitant ainsi les copies inutiles dans les cas où les objets coûtent cher à copier.

Pour modifier des éléments

Si vous devez modifier des éléments en place, la syntaxe est :

for (auto& elem : container)
Copier après la connexion

Cette syntaxe capture les éléments par référence non const, permettant de les modifier dans le corps de la boucle.

Cas particulier : Proxy Itérateurs

Cependant, pour les conteneurs qui utilisent des itérateurs proxy (tels que std::vector), une syntaxe différente est requise pour modifier les éléments :

for (auto&& elem : container)
Copier après la connexion

Cette syntaxe utilise le modificateur de type "&&" pour fonctionner correctement avec le proxy itérateurs.

Résumé

  • Pour observer des éléments, utilisez for (const auto& elem : conteneur) ou for (auto elem : conteneur) si la copie est peu coûteuse.
  • Pour modifier des éléments, utiliser for (auto& elem : conteneur) ou for (auto&& elem : conteneur) pour proxy itérateurs.
  • Dans le code générique, préférez utiliser la syntaxe de référence const pour l'observation et auto&& pour la modification afin de gérer les itérateurs standard et proxy avec élégance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal