Heim >Backend-Entwicklung >C++ >Wie kann ich über verschachtelte Karten in C iterieren?

Wie kann ich über verschachtelte Karten in C iterieren?

DDD
DDDOriginal
2024-12-04 20:23:12167Durchsuche

How Can I Iterate Over Nested Maps in C  ?

Iterieren über verschachtelte Karten in C

Das Durchlaufen einer Karte von Karten in C kann mithilfe verschachtelter for-Schleifen erreicht werden. Betrachten Sie den folgenden Container:

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";

Verschachtelte For-Schleifen:

Um über diese Karte zu iterieren, verwenden Sie verschachtelte For-Schleifen:

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

Dieser Ansatz ermöglicht den Zugriff auf den äußeren Schlüssel, den inneren Schlüssel und den Wert für jedes Element in der Verschachtelung Karte.

C 11-Verbesserungen:

In C 11 kann die bereichsbasierte for-Schleife verwendet werden, um den obigen Code zu vereinfachen:

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

C 17 Strukturierte Bindungen:

In C 17, strukturiert Bindungen können die Syntax weiter vereinfachen:

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

Mit diesen Methoden können Sie verschachtelte Karten effizient durchlaufen und auf die darin enthaltenen Daten zugreifen.

Das obige ist der detaillierte Inhalt vonWie kann ich über verschachtelte Karten in C iterieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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