Maison > développement back-end > C++ > Comment utiliser efficacement les boucles For basées sur une plage en C 11 ?

Comment utiliser efficacement les boucles For basées sur une plage en C 11 ?

Susan Sarandon
Libérer: 2024-12-21 08:13:09
original
875 Les gens l'ont consulté

How Do I Effectively Use Range-Based For Loops in C  11?

Boucles for basées sur une plage en C 11

Syntaxe et utilisation

C 11 a introduit les boucles for basées sur une plage comme moyen concis et expressif de parcourir les conteneurs. La syntaxe est :

for (range_declaration : container) {
  // body of the loop
}
Copier après la connexion

où :

  • range_declaration déclare une variable pour contenir chaque élément du conteneur.
  • le conteneur est le conteneur que vous souhaitez parcourir terminé.

Capture par référence ou valeur

La variable dans la range_declaration peut être capturée par référence ou valeur en utilisant la syntaxe suivante :

  • auto capture l'élément par valeur.
  • auto& capture l'élément par référence non const.
  • const auto& capture l'élément par référence const.

Pour observer les éléments, là où vous n'avez pas besoin de les modifier, vous devez utiliser const auto&. Cela évite les copies inutiles et garantit que les éléments d'origine ne sont pas modifiés.

Si vous souhaitez modifier les éléments, utilisez auto&.

Notez que pour les conteneurs avec itérateurs proxy (comme std::vector), vous devez utiliser auto&& pour capturer les éléments en value.

Directives d'utilisation de For basé sur une plage

Considérez les directives suivantes lorsque vous utilisez un For basé sur une plage :

  • Pour observer des éléments :

    • pour (const auto& elem : conteneur) (capture par référence const)
    • Si les éléments sont peu coûteux à copier (par exemple, ints), vous pouvez les utiliser pour (auto elem : conteneur) (capture par valeur).
  • Pour modifier des éléments :

    • for (auto& elem : conteneur) (capture par référence non const)
    • Pour les itérateurs proxy (par exemple, std::vector), utiliser pour (auto&& elem : conteneur) (capture par &&).

Considérations sur le code générique

Dans le code générique, où vous ne connaissez pas le type des éléments itérés, utilisez:

  • for (const auto& elem : conteneur) pour observer les éléments.
  • for (auto&& elem : conteneur) pour modifier des éléments (fonctionne à la fois pour les itérateurs réguliers et proxy).

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