Heim > Backend-Entwicklung > C++ > Wie kann man verschachtelte Karten in C effizient durchlaufen?

Wie kann man verschachtelte Karten in C effizient durchlaufen?

Patricia Arquette
Freigeben: 2024-12-03 02:08:10
Original
341 Leute haben es durchsucht

How to Efficiently Iterate Through Nested Maps in C  ?

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>. Diese Kartenstruktur enthält Daten wie diese:

m["name1"]["value1"] = "data1";
m["name1"]["value2"] = "data2";
m["name2"]["value1"] = "data1";
m["name2"]["value2"] = "data2";
m["name3"]["value1"] = "data1";
m["name3"]["value2"] = "data2";
Nach dem Login kopieren

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
  }
}
Nach dem Login kopieren

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;
  }
}
Nach dem Login kopieren

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
  }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage