So iterieren Sie über die Karte in C++

How Iterate Over Map C



In diesem kurzen Tutorial erfahren Sie, wie Sie in Map in C++ iterieren.

Es gibt mehrere Möglichkeiten, die Karte in C++ zu durchlaufen. Mit neueren Versionen von C++ gibt es erweiterte Möglichkeiten, die Map in C++ zu durchlaufen.







Gehen wir jeden einzeln durch.



Verwenden der for-Schleife mit stp::map

Wir haben eine Karte namens |_+_| . erstellt und fügte darin Schlüssel-Wert-Paare ein.



<zum>
#enthalten
#enthalten
#enthalten
#enthalten
#enthalten
mit Namensraumstd;
inthauptsächlich() {
// Eine Karte initialisieren
Karte>'Indien','Delhi'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Nepal','Kathmandu'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('China','Peking'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Frankreich','Paris'));

// Iteriere mit dem Iterator in der for-Schleife
zum (Autoitr=countryCapitalMap.Start();itr!=countryCapitalMap.Ende();itr++)
{
std::Kosten <<itr->Erste// Zugangsschlüssel
<< ':'
<<itr->Sekunde// Zugriffswert
<<std::endl;
}
Rückkehr 0;
}
</zum>
Ausgabe:
<zum>
China:Peking
Frankreich:Paris
Indien:Delhi
Nepal:Kathmandu
</zum>

Wie Sie sehen, haben wir country:capital(key:value) mit der for-Schleife gedruckt.





Wenn Sie es bemerken, haben wir |_+_| . verwendet Typbezeichner für Map-Iterator aus Gründen der Lesbarkeit. Sie können |_+_| . verwenden auch explizit.
Notiz: Wenn Sie die Ausgabe sehen, ist sie nach Schlüsseln in aufsteigender Reihenfolge sortiert. Dies liegt daran, dass std::map ein sortierter assoziativer Container mit mitgeliefertem Comparator (ab Version C++11) ist. Da wir keinen Komparator bereitgestellt haben, hat C++ den Standardkomparator für string verwendet.

Verwenden der while-Schleife mit stp::map

Anstelle einer for-Schleife können wir auch eine while-Schleife verwenden.



<zum>
#enthalten
#enthalten
#enthalten
#einschließen >
mit Namensraumstd;
inthauptsächlich() {
// Eine Karte initialisieren
Karte<Schnur, Schnur>LandHauptstadtKarte;
// Füge verschiedene Elemente in die Karte ein
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Indien','Delhi'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Nepal','Kathmandu'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('China','Peking'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Frankreich','Paris'));


// Erstellen Sie einen Iterator für die Karte und initialisieren Sie mit begin
Autoitr=countryCapitalMap.Start();
// Iteriere mit dem Iterator in der while-Schleife
während (itr!=countryCapitalMap.Ende())
{
std::Kosten <<itr->Erste// Zugangsschlüssel
<< ':'
<<itr->Sekunde// Zugriffswert
<<std::endl;
itr++;
}
Rückkehr 0;
}
</zum>
Ausgabe:
<zum>
China:Peking
Frankreich:Paris
Indien:Delhi
Nepal:Kathmandu
</zum>

Verwenden einer bereichsbasierten for-Schleife (ab C++11-Version)

Wenn Sie die C++11-Version verwenden, ist dies die eleganteste Methode, um in C++ über die Karte zu iterieren. Sie können traditionelle würfelförmige Schleifen vermeiden und stattdessen diese verwenden.

<zum>
#enthalten
#enthalten
#enthalten

mit Namensraumstd;
inthauptsächlich() {
// Eine Karte initialisieren
Karte<Schnur, Schnur>LandHauptstadtKarte;
// Füge verschiedene Elemente in die Karte ein
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Indien','Delhi'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Nepal','Kathmandu'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('China','Peking'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Frankreich','Paris'));


// Iteriere mit dem Iterator in der for-Schleife
zum (const Auto &er:LandHauptstadtKarte) {
Kosten <<er.Erste << ':' <<er.Sekunde<<' ';
}

Rückkehr 0;
}
</zum>
Ausgabe:
China:Peking
Frankreich:Paris
Indien:Delhi
Nepal:Kathmandu

Verwenden einer bereichsbasierten for-Schleife mit Schlüssel/Wert-Paaren (ab Version C++17)

Diese Version wird ab c++17 unterstützt und bietet eine flexiblere Möglichkeit, über die Karte zu iterieren. Sie können in der Karte explizit auf das Schlüssel-Wert-Paar zugreifen, was eine noch besser lesbare Lösung bietet.

<zum>
#enthalten
#enthalten
#enthalten

mit Namensraumstd;
inthauptsächlich() {
// Eine Karte initialisieren
Karte<Schnur, Schnur>LandHauptstadtKarte;
// Füge verschiedene Elemente in die Karte ein
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Indien','Delhi'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Nepal','Kathmandu'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('China','Peking'));
countryCapitalMap.Einfügung(Paar<Schnur, Schnur>('Frankreich','Paris'));


// Iteriere mit dem Iterator in der for-Schleife
zum (const Auto& [Schlüsselwert] :LandHauptstadtKarte) {
Kosten <<Schlüssel<< ':' <<Wert<< ' ';
}

Rückkehr 0;
}
</zum>
Ausgabe:
China:Peking
Frankreich:Paris
Indien:Delhi
Nepal:Kathmandu

Das ist alles darüber, wie man in C++ über die Karte iteriert. Viel Spaß beim Codieren!