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
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!