Comment utiliser correctement la boucle for basée sur une plage en C 11
La boucle for basée sur une plage est un mécanisme de traversée d'itérateur concis et puissant qui a été introduit dans C 11 introduit. Il est utilisé pour parcourir un conteneur ou une autre séquence itérable et référencer des éléments de la séquence via une ou plusieurs variables. Voici comment utiliser correctement une boucle for basée sur une plage :
Syntaxe
for (auto elem : container) {
// 代码体
}
Où :
- Le mot-clé auto signifie que le compilateur déduira automatiquement le type d'élément.
- elem est la variable itératrice pour les éléments de la boucle.
- container est le conteneur ou la séquence itérable sur laquelle effectuer une itération.
Mode de capture d'éléments
Lorsque vous utilisez une boucle for basée sur une plage, vous pouvez choisir l'un des trois modes de capture d'éléments suivants :
-
Appuyez sur Capture de valeur (élément automatique) : Crée une copie locale d'un élément. Cela fonctionne pour les types dont les éléments sont peu coûteux à copier (par exemple int, double, etc.).
-
Capture par référence (auto&elem) : Référencez directement l'élément dans le conteneur. Ceci est utilisé pour modifier des éléments ou des types où la copie doit être évitée.
-
Capturer le proxy par référence (auto&&elem) : Pour parcourir un conteneur à l'aide d'un "itérateur proxy" (par exemple std::vector).
Observer ou modifier
Les boucles for basées sur une plage peuvent être utilisées à deux fins principales :
-
Observer éléments : utiliser const auto&elem capture les éléments pour garantir que l'élément d'origine n'est pas modifié.
-
Modifier élément : utilisez auto&elem pour capturer l'élément afin de modifier directement l'élément d'origine.
Directives
Pour utiliser correctement la méthode basée sur la plage pour Pour les boucles, tenez compte des directives suivantes :
- Pour les éléments observés, utilisez :
for (const auto& elem : container) // 按引用捕获常量
- Pour les éléments modifiés, utilisez :
for (auto& elem : container) // 按引用捕获
- Si le conteneur utilise "proxy Iterator", utilisez :
for (auto&& elem : container) // 按引用捕获 proxy
Notes dans le code générique
Dans le code générique, il est recommandé d'utiliser const auto&elem pour capturer des éléments à observer, et auto&& ;elem capture les éléments à modifier, car ces méthodes fonctionnent avec différents types de conteneurs et d'éléments.
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