Heim >Backend-Entwicklung >C++ >Wie kann ich verschachtelte Karten in C effizient durchlaufen?
Iterieren mehrerer Karten in C
Das Navigieren durch mehrere Ebenen verschachtelter Karten in C kann eine entmutigende Aufgabe sein. Dieser Leitfaden bietet eine umfassende Lösung zum Durchlaufen eines Kartencontainers, einer sogenannten Karte von Karten.
Der Ansatz nutzt die leistungsstarke bereichsbasierte for-Schleife, die in C 11 eingeführt wurde. Lassen Sie uns tiefer in den Code eintauchen:
std::map<std::string, std::map<std::string, std::string>> mymap; for (auto const &ent1 : mymap) { for (auto const &ent2 : ent1.second) { std::cout << ent1.first << " " << ent2.first << " " << ent2.second << std::endl; } }
In der äußeren Schleife enthält ent1 ein Schlüssel-Wert-Paar, wobei ent1.first den Schlüssel der ersten Ebene darstellt. Die innere Schleife durchläuft den Wert von ent1.second, einer weiteren Karte, und ent2 bietet Zugriff auf den Schlüssel und den Wert der Karte der zweiten Ebene.
Wenn Sie explizite Definitionen von Referenzvariablen bevorzugen, können Sie dies tun kann temporäre Variablen wie „outer_key“, „inner_key“ und „inner_value“ einführen, um den Zweck jeder Variablen zu verdeutlichen.
C 17 führt strukturierte Bindungen ein und bietet eine prägnante Syntax für den Zugriff auf verschachtelte Variablen Elemente. Der folgende Codeausschnitt demonstriert diese Funktion:
for (auto const &[outer_key, inner_map] : mymap) { for (auto const &[inner_key, inner_value] : inner_map) { std::cout << outer_key << " " << inner_key << " " << inner_value << std::endl; } }
In diesem Beispiel sind der äußere Schlüssel und Wert sowie der innere Schlüssel und Wert direkt im Schleifenkörper zugänglich.
By Mithilfe dieser Techniken können Sie mühelos mehrere Ebenen verschachtelter Karten in C durchlaufen. Viel Spaß beim Codieren!
Das obige ist der detaillierte Inhalt vonWie kann ich verschachtelte Karten in C effizient durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!