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!