Heim >Backend-Entwicklung >C++ >Wie kann man verschachtelte Karten in C effizient durchlaufen?
Iterieren durch verschachtelte Karten in C
Stellen Sie sich ein Szenario vor, in dem Sie eine verschachtelte Karte in C haben. Konkret handelt es sich bei Ihrer Karte um eine 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";
Um diese verschachtelte Karte effektiv zu durchlaufen und auf die verschiedenen Werte zuzugreifen, können Sie die folgenden Techniken verwenden:
Verwenden von C 11 Ranged for-Schleifen:
Mit C 11 können Sie bereichsbasierte for-Schleifen verwenden, um den Iterationsprozess zu vereinfachen. Dieser Ansatz vermeidet unnötige Kopien und bietet eine prägnante Syntax.
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 } }
Verwendung der expliziten Definition von Referenzvariablen:
Alternativ können Sie die Lesbarkeit verbessern, indem Sie Referenzvariablen explizit definieren für die Schlüssel und Werte. Während dieser Ansatz mehr Code generiert, definiert er zur besseren Übersichtlichkeit explizit Variablen.
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; } }
Verwendung strukturierter Bindungen in C 17:
In C 17 bieten sich strukturierte Bindungen an eine weitere vereinfachte und prägnante Methode zum Durchlaufen verschachtelter Karten.
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 } }
Das obige ist der detaillierte Inhalt vonWie kann man verschachtelte Karten in C effizient durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!