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

Comment parcourir efficacement des cartes imbriquées en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-03 02:08:10342parcourir

How to Efficiently Iterate Through Nested Maps in C  ?

Itérer sur des cartes imbriquées en C

Considérez un scénario dans lequel vous avez une carte imbriquée en C . Plus précisément, votre carte est un std::map>. Cette structure de carte contient des données comme celles-ci :

m["name1"]["value1"] = "data1";
m["name1"]["value2"] = "data2";
m["name2"]["value1"] = "data1";
m["name2"]["value2"] = "data2";
m["name3"]["value1"] = "data1";
m["name3"]["value2"] = "data2";

Pour parcourir efficacement cette carte imbriquée et accéder aux différentes valeurs, vous pouvez utiliser les techniques suivantes :

Utilisation de C 11 Ranged for Loops :

Avec C 11, vous pouvez utiliser des boucles for basées sur des distances pour simplifier le processus d'itération. Cette approche évite les copies inutiles et fournit une syntaxe concise.

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

for (auto const &ent1 : mymap) {
  // ent1.first is the first key
  for (auto const &ent2 : ent1.second) {
    // ent2.first is the second key
    // ent2.second is the data
  }
}

Utilisation de la définition explicite des variables de référence :

Vous pouvez également améliorer la lisibilité en définissant explicitement des variables de référence. pour les clés et les valeurs. Bien que cette approche génère plus de code, elle définit explicitement des variables pour une meilleure clarté.

for (auto const &ent1 : mymap) {
  auto const &outer_key = ent1.first;
  auto const &inner_map = ent1.second;
  for (auto const &ent2 : inner_map) {
    auto const &inner_key = ent2.first;
    auto const &inner_value = ent2.second;
  }
}

Utilisation de liaisons structurées en C 17 :

En C 17, les liaisons structurées offrent une méthode encore plus simplifiée et concise pour parcourir des cartes imbriquées.

for (auto const &[outer_key, inner_map] : mymap) {
  for (auto const &[inner_key, inner_value] : inner_map) {
    // Access outer_key, inner_key and inner_value directly
  }
}

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