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
Libérer: 2024-12-03 02:08:10
original
341 Les gens l'ont consulté

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";
Copier après la connexion

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
  }
}
Copier après la connexion

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;
  }
}
Copier après la connexion

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
  }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal