Maison >développement back-end >C++ >Comment fonctionnent \'colon\' et \'auto\' dans les boucles for basées sur une plage C ?

Comment fonctionnent \'colon\' et \'auto\' dans les boucles for basées sur une plage C ?

DDD
DDDoriginal
2024-11-02 11:29:30762parcourir

How do 'colon' and 'auto' work in C   range-based for loops?

Boucles for basées sur une plage : comprendre « deux points » et « auto » en C

En programmation C, les boucles for basées sur une plage fournissent une manière élégante et concise d'itérer sur les conteneurs, éliminant le besoin d'un contrôle d'itération explicite. Pour comprendre la syntaxe entourant ces boucles, examinons l'exemple fourni :

<code class="cpp">for(const auto& ioDev : deviceList)</code>

Cette syntaxe introduit une boucle for basée sur une plage itérant sur les éléments du conteneur deviceList. Voici un aperçu des éléments clés :

  • 'auto' : ce mot-clé demande au compilateur de déduire automatiquement le type de la variable d'itération, ioDev dans ce cas.
  • '&' : Le symbole esperluette signifie que la variable d'itération doit être une référence à l'élément conteneur d'origine, nous permettant d'y accéder sans faire de copie.
  • ':' : Les deux points initient l'itération sur la plage spécifiée.

Le contexte donné suggère que DeviceList est un std::vector. La boucle for basée sur une plage est équivalente à la boucle for traditionnelle suivante :

<code class="cpp">for(auto it = deviceList.begin(); it != deviceList.end(); ++it) {
  const auto& ioDev = *it;
}</code>

Ici, il s'agit d'un itérateur qui traverse la DeviceList. Cependant, la syntaxe des boucles for basées sur une plage est préférée pour sa brièveté et sa clarté.

En résumé, les boucles for basées sur une plage en C utilisent ':' et 'auto' pour fournir un mécanisme d'itération concis et efficace. sur les collections, déduisant automatiquement le type de variable d'itération et garantissant un accès de référence aux éléments d'origine.

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