Wie man über die Karte in C ++ iteriert

Wie man über die Karte in C ++ iteriert
In diesem kurzen Tutorial werden wir sehen, wie wir in MAP in C iterieren können++. Es gibt mehrere Möglichkeiten, über die Karte in C zu iterieren++. Mit neueren Versionen von C ++ gibt es fortgeschrittenere Möglichkeiten, über die Karte in C zu iterieren++. Lassen Sie uns jeden einzeln durchlaufen.

Verwenden Sie für Schleife mit std :: map

Wir haben eine Karte namens erstellt CountryCapitalMap und ein eingefügte Schlüsselwertpaare in sie eingefügt. Anschließend verwenden wir einen Iterator, um durch die Mitglieder der Kartendatenstruktur eine für Schleife durchzuführen.

#enthalten
#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
// Initialisieren Sie eine Karte
KarteCountryCapitalMap;
CountryCapitalMap.Einfügen (Paar("Nepal", "Kathmandu");
CountryCapitalMap.Einfügen (Paar("China", "Peking");
CountryCapitalMap.Einfügen (Paar("Frankreich Paris"));
// mit Iterator für Schleife iterieren
für (auto itr = landescapitalmap.Start();
itr != CountryCapitalMap.Ende(); itr ++)
std :: Cout << itr->Erstens // Zugriffsschlüssel zugreifen
<< ':'
<< itr->Zweiter // Zugriffswert
<< std::endl;

Rückkehr 0;
Ausgang:
China: Peking
Frankreich Paris
Nepal: Kathmandu

Wie Sie sehen können, haben wir Land gedruckt: Kapital (Schlüssel: Wert) für Schleife verwenden.

Wenn Sie es bemerken, haben wir verwendet Auto Geben Sie den Spezifizierer für Karten -Iterator aufgrund der Lesbarkeit ein. Sie können verwenden Karte :: Iterator auch explizit.
Notiz: Wenn Sie die Ausgabe sehen, wird er in aufsteigender Reihenfolge nach Schlüssel sortiert. Dies liegt daran, dass STD :: MAP ein sortierter assoziativer Container mit dem mitgelieferten Komparator ist (Version C ++ 11). Da wir keinen Vergleicher bereitgestellt haben, hat C ++ den Standardvergleich für die String verwendet.

Verwenden Sie während der Schleife mit STP :: Map

Wir können auch eine Weile Schleife anstelle von für die Schleife verwenden.

#enthalten
#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
// Initialisieren Sie eine Karte
Karte CountryCapitalMap;
// verschiedene Elemente in die Karte einfügen
CountryCapitalMap.Einfügen (Paar("Indien", "Delhi");
CountryCapitalMap.Einfügen (Paar("Nepal", "Kathmandu");
CountryCapitalMap.Einfügen (Paar("China", "Peking");
CountryCapitalMap.Einfügen (Paar("Frankreich Paris"));
// Erstellen Sie einen Iterator für die Karte und initialisieren Sie mit Beginn
Auto iTR = CountryCapitalMap.Start();
// Itererieren Sie die Iteratorin während der Schleife
während (ITR!= CountryCapitalMap.Ende())

std :: Cout << itr->Erstens // Zugriffsschlüssel zugreifen
<< ':'
<< itr->Zweiter // Zugriffswert
<< std::endl;
itr ++;

Rückkehr 0;

Ausgang:

China: Peking
Frankreich Paris
Indien: Delhi
Nepal: Kathmandu

Verwenden von Bereichsbasis für Schleife (C ++ 11 Version)

Wenn Sie eine C ++ 11 -Version verwenden, ist dies die eleganteste Möglichkeit, um die Karte in C zu iterieren++. Sie können herkömmliche Cubersome -Schleifen vermeiden und dies stattdessen verwenden.

#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
// Initialisieren Sie eine Karte
Karte CountryCapitalMap;
// verschiedene Elemente in die Karte einfügen
CountryCapitalMap.Einfügen (Paar("Indien", "Delhi");
CountryCapitalMap.Einfügen (Paar("Nepal", "Kathmandu");
CountryCapitalMap.Einfügen (Paar("China", "Peking");
CountryCapitalMap.Einfügen (Paar("Frankreich Paris"));
// mit Iterator für Schleife iterieren
für (const Auto & ele: CountryCapitalMap)
Cout <
Rückkehr 0;
Ausgang:
China: Peking
Frankreich Paris
Indien: Delhi
Nepal: Kathmandu

Verwenden von Bereichsbasis für Schleife mit Schlüsselwertern (C ++ 17 Version)

Diese Version wird ab C ++ 17 unterstützt und bietet eine flexiblere Möglichkeit, über der Karte zu iterieren. Sie können explizit auf das Tastenwertepaar in der Karte zugreifen, die noch mehr lesbare Lösung bietet.

#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
// Initialisieren Sie eine Karte
Karte CountryCapitalMap;
// verschiedene Elemente in die Karte einfügen
CountryCapitalMap.Einfügen (Paar("Indien", "Delhi");
CountryCapitalMap.Einfügen (Paar("Nepal", "Kathmandu");
CountryCapitalMap.Einfügen (Paar("China", "Peking");
CountryCapitalMap.Einfügen (Paar("Frankreich Paris"));
// mit Iterator für Schleife iterieren
für (const Auto & [Schlüssel, Wert]: CountryCapitalMap)
Cout << key << ":" << value << "\n";

Rückkehr 0;
Ausgang:
China: Peking
Frankreich Paris
Indien: Delhi
Nepal: Kathmandu

Hier geht es darum, über die Karte in C zu iterieren++.