Maison > Article > développement back-end > En quoi le comportement de la boucle For() basé sur une plage diffère-t-il avec std::map en C ?
Lors de l'utilisation de boucles for() basées sur une plage en C avec des conteneurs de bibliothèque standard comme std::map, comprendre le type de variable résultant est crucial. Cet article explore la complexité des cartes dans les boucles basées sur une plage, fournissant un aperçu de ce à quoi s'attendre.
En général, les boucles for() basées sur une plage avec des conteneurs tels que std::vector accordent un accès direct aux informations de chaque élément. valeur. Cependant, pour les conteneurs comme std::map, la situation devient légèrement plus nuancée.
Dans le cas de std::map, la variable (par exemple, abc dans l'exemple) dans le for() basé sur la plage La boucle est de type map
L'accès à la clé et à la valeur à partir d'abc nécessite des étapes supplémentaires. En C 17 et versions ultérieures, les boucles déstructurées basées sur la plage permettent un accès direct à la clé et à la valeur :
<code class="cpp">for (auto& [key, value]: myMap) { std::cout << key << " has value " << value << std::endl; }</code>
Vous pouvez également utiliser des boucles traditionnelles basées sur la plage en C 11 et C 14 :
<code class="cpp">for (const auto& kv : myMap) { std::cout << kv.first << " has value " << kv.second << std::endl; }</code>
En décomposant manuellement chaque paire clé-valeur, vous accédez à la fois à la clé et à la valeur. De plus, marquer la variable kv comme const fournit une vue en lecture seule des valeurs.
Comprendre le type_valeur et les nuances des boucles for() basées sur une plage avec std::map est essentiel pour une utilisation efficace. Ces connaissances vous permettent d'accéder et de manipuler des paires clé-valeur avec clarté et efficacité.
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!