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
Susan Sarandonoriginal
2024-12-21 08:13:09898parcourir

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
}

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!

Déclaration:
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