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

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

DDD
DDDoriginal
2024-12-04 20:23:12167parcourir

How Can I Iterate Over Nested Maps in C  ?

Itérer sur des cartes imbriquées en C

La boucle sur une carte de cartes en C peut être réalisée à l'aide de boucles for imbriquées. Considérons le conteneur suivant :

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

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

Boucles For imbriquées :

Pour parcourir cette carte, utilisez des boucles for imbriquées :

for (auto const &ent1 : m) {
  // ent1.first is the outer key
  for (auto const &ent2 : ent1.second) {
    // ent2.first is the inner key
    // ent2.second is the value
  }
}

Cette approche donne accès à la clé externe, à la clé interne et à la valeur de chaque élément du fichier imbriqué. map.

Améliorations de C 11 :

En C 11, la boucle for basée sur la distance peut être utilisée pour simplifier le code ci-dessus :

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

Reliures structurées C 17 :

En C 17, les liaisons structurées peuvent simplifier davantage la syntaxe :

for (auto const &[outer_key, inner_map] : m) {
  for (auto const &[inner_key, inner_value] : inner_map) {
    // Access outer_key, inner_key, and inner_value without need for variables
  }
}

En utilisant ces méthodes, vous pouvez parcourir efficacement les cartes imbriquées et accéder aux données qu'elles contiennent.

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