Come iterare sulla mappa in C ++

Come iterare sulla mappa in C ++
In questo rapido tutorial, vedremo come iterare nella mappa in c++. Esistono diversi modi per iterare sulla mappa in C++. Con le versioni più recenti di C ++, ci sono modi più avanzati per iterare sulla mappa in C++. Passiamo a uno per uno.

Utilizzando per loop con std :: mappa

Abbiamo creato una mappa denominata CountryCapitalmap e ha inserito coppie di valore chiave. Quindi utilizziamo un iteratore per fare un ciclo per loop attraverso i membri della struttura dei dati della mappa.

#includere
#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
// Inizializza una mappa
carta geograficaCountryCapitalmap;
CountryCapitalmap.Inserisci (coppia("Nepal", "Kathmandu"));
CountryCapitalmap.Inserisci (coppia("Cina", "Pechino"));
CountryCapitalmap.Inserisci (coppia("Francia", "Paris"));
// iterazione usando iterator in for loop
per (auto itr = countrycapitalmap.inizio();
itr != CountryCapitalmap.FINE(); itr ++)
std :: cout << itr->First // Chiave di accesso
<< ':'
<< itr->Secondo // valore di accesso
<< std::endl;

restituzione 0;
Produzione:
Cina: Pechino
Francia: Parigi
Nepal: Kathmandu

Come puoi vedere, abbiamo stampato Paese: Capitale (chiave: valore) Utilizzando per loop.

Se noti, abbiamo usato auto Digita Specificatore per Map Iterator a causa della leggibilità. Puoi usare Mappa :: iteratore esplicitamente anche.
Nota: Se vedi l'output, è ordinato per chiavi in ​​ordine crescente. Questo perché STD :: Map è un contenitore associativo ordinato con comparatore fornito (versione C ++ 11 in poi). Dal momento che non abbiamo fornito alcun comparatore, quindi C ++ ha utilizzato il comparatore predefinito per la stringa.

Usando While Loop con STP :: Map

Possiamo anche usare un ciclo while anziché per loop.

#includere
#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
// Inizializza una mappa
carta geografica CountryCapitalmap;
// Inserisci diversi elementi nella mappa
CountryCapitalmap.Inserisci (coppia("India", "Delhi"));
CountryCapitalmap.Inserisci (coppia("Nepal", "Kathmandu"));
CountryCapitalmap.Inserisci (coppia("Cina", "Pechino"));
CountryCapitalmap.Inserisci (coppia("Francia", "Paris"));
// crea un iteratore per la mappa e inizializza con inizio
auto itr = countrycapitalmap.inizio();
// iterare usando iteratore nel ciclo
mentre (ITR!= CountryCapitalmap.FINE())

std :: cout << itr->First // Chiave di accesso
<< ':'
<< itr->Secondo // valore di accesso
<< std::endl;
ITR ++;

restituzione 0;

Produzione:

Cina: Pechino
Francia: Parigi
India: Delhi
Nepal: Kathmandu

Utilizzo dell'intervallo basato per loop (versione C ++ 11 in poi)

Se stai usando la versione C ++ 11, questo è il modo più elegante per iterare la mappa in C++. Puoi evitare i loop tradizionali a cube e usarlo invece.

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
// Inizializza una mappa
carta geografica CountryCapitalmap;
// Inserisci diversi elementi nella mappa
CountryCapitalmap.Inserisci (coppia("India", "Delhi"));
CountryCapitalmap.Inserisci (coppia("Nepal", "Kathmandu"));
CountryCapitalmap.Inserisci (coppia("Cina", "Pechino"));
CountryCapitalmap.Inserisci (coppia("Francia", "Paris"));
// iterazione usando iterator in for loop
per (const auto & ele: countrycapitalmap)
cout <
restituzione 0;
Produzione:
Cina: Pechino
Francia: Parigi
India: Delhi
Nepal: Kathmandu

Utilizzo di gamma basata per loop con coppie di valori chiave (versione C ++ 17 in poi)

Questa versione è supportata da C ++ 17 in poi e fornisce un modo più flessibile per ripetere la mappa. È possibile accedere esplicitamente alla coppia di valori chiave in mappa che fornisce una soluzione ancora più leggibile.

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
// Inizializza una mappa
carta geografica CountryCapitalmap;
// Inserisci diversi elementi nella mappa
CountryCapitalmap.Inserisci (coppia("India", "Delhi"));
CountryCapitalmap.Inserisci (coppia("Nepal", "Kathmandu"));
CountryCapitalmap.Inserisci (coppia("Cina", "Pechino"));
CountryCapitalmap.Inserisci (coppia("Francia", "Paris"));
// iterazione usando iterator in for loop
per (const auto & [key, value]: countrycapitalmap)
cout << key << ":" << value << "\n";

restituzione 0;
Produzione:
Cina: Pechino
Francia: Parigi
India: Delhi
Nepal: Kathmandu

Questo è tutto su come iterare sulla mappa in c++.