Maison >développement back-end >C++ >Comment puis-je parcourir efficacement des cartes imbriquées en C ?

Comment puis-je parcourir efficacement des cartes imbriquées en C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-08 08:54:11456parcourir

How Can I Efficiently Iterate Through Nested Maps in C  ?

Itérer plusieurs cartes en C

Naviguer à travers plusieurs niveaux de cartes imbriquées en C peut être une tâche ardue. Ce guide fournit une solution complète pour parcourir un conteneur de cartes, appelé carte de cartes.

L'approche utilise la puissante boucle for basée sur la distance, introduite en C 11. Examinons le code :

std::map<std::string, std::map<std::string, std::string>> mymap;

for (auto const &ent1 : mymap) {
  for (auto const &ent2 : ent1.second) {
    std::cout << ent1.first << " " << ent2.first << " " << ent2.second << std::endl;
  }
}

Dans la boucle externe, ent1 contient une paire clé-valeur où ent1.first représente la clé de premier niveau. La boucle interne parcourt la valeur de ent1.second, qui est une autre carte, et ent2 donne accès à la clé et à la valeur de la carte de deuxième niveau.

Si vous préférez utiliser des définitions explicites de variables de référence, vous peut introduire des variables temporaires comme external_key, inner_key et inner_value pour clarifier le but de chaque variable.

C 17 introduit des liaisons structurées, offrant une syntaxe concise pour accéder aux imbriqués éléments. L'extrait de code suivant illustre cette fonctionnalité :

for (auto const &amp;[outer_key, inner_map] : mymap) {
  for (auto const &amp;[inner_key, inner_value] : inner_map) {
    std::cout << outer_key << " " << inner_key << " " << inner_value << std::endl;
  }
}

Dans cet exemple, la clé et la valeur externes, ainsi que la clé et la valeur internes, sont directement accessibles dans le corps de la boucle.

Par en utilisant ces techniques, vous pouvez parcourir sans effort plusieurs niveaux de cartes imbriquées en C . Bon codage !

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