Come iterare sulla mappa in C++

How Iterate Over Map C

In questo breve tutorial, vedremo come eseguire l'iterazione in map in C++.

Esistono diversi modi per scorrere la mappa in C++. Con le versioni più recenti di C++, ci sono modi più avanzati per scorrere la mappa in C++.



Esaminiamoli uno per uno.



Utilizzo del ciclo for con stp::map

Abbiamo creato una mappa chiamata |_+_| e ha inserito coppie chiave-valore in esso.



<per>
#includere
#includere
#includere
#includere
#includere
usando spazio dei nomiore;
intprincipale() {
// Inizializza una mappa
carta geografica>'India','Delhi'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Nepal','Kathmandu'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Cina','Pechino'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Francia','Parigi'));

// Itera usando l'iteratore nel ciclo for
per (autoitr=countryCapitalMap.inizio();itr!=countryCapitalMap.fine();itr++)
{
ore::costo <<itr->primo// Chiave di accesso
<< ':'
<<itr->secondo// Valore di accesso
<<ore::fine;
}
Restituzione 0;
}
</per>
Produzione:
<per>
Cina:Pechino
Francia:Parigi
India:Delhi
Nepal:Katmandu
</per>

Come puoi vedere, abbiamo stampato country:capital(key:value) usando for loop.

Se noti, abbiamo usato |_+_| identificatore di tipo per l'iteratore della mappa a causa della leggibilità. Puoi usare |_+_| anche esplicitamente.
Nota: Se vedi l'output, è ordinato per chiavi in ​​ordine crescente. Questo perché std::map è un contenitore associativo ordinato con Comparator fornito (versione C++ 11 in poi). Poiché non abbiamo fornito alcun comparatore, quindi C++ ha utilizzato il comparatore predefinito per la stringa.

Utilizzo del ciclo while con stp::map

Possiamo anche usare un ciclo while invece del ciclo for.



<per>
#includere
#includere
#includere
#include >
usando spazio dei nomiore;
intprincipale() {
// Inizializza una mappa
carta geografica<stringa, stringa>paeseCapitalMap;
// Inserisce diversi elementi nella mappa
countryCapitalMap.inserire(coppia<stringa, stringa>('India','Delhi'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Nepal','Kathmandu'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Cina','Pechino'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Francia','Parigi'));


// Crea un iteratore per la mappa e inizializza con begin
autoitr=countryCapitalMap.inizio();
// Itera usando l'iteratore nel ciclo while
mentre (itr!=countryCapitalMap.fine())
{
ore::costo <<itr->primo// Chiave di accesso
<< ':'
<<itr->secondo// Valore di accesso
<<ore::fine;
itr++;
}
Restituzione 0;
}
</per>
Produzione:
<per>
Cina:Pechino
Francia:Parigi
India:Delhi
Nepal:Katmandu
</per>

Utilizzo di Range based for loop (versione C++ 11 in poi)

Se stai usando la versione C++ 11, questo è il modo più elegante per scorrere la mappa in C++. Puoi evitare i tradizionali loop cubersome e usare invece questo.

<per>
#includere
#includere
#includere

usando spazio dei nomiore;
intprincipale() {
// Inizializza una mappa
carta geografica<stringa, stringa>paeseCapitalMap;
// Inserisce diversi elementi nella mappa
countryCapitalMap.inserire(coppia<stringa, stringa>('India','Delhi'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Nepal','Kathmandu'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Cina','Pechino'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Francia','Parigi'));


// Itera usando l'iteratore nel ciclo for
per (cost auto &lui:paeseCapitalMap) {
costo <<lui.primo << ':' <<lui.secondo<<' ';
}

Restituzione 0;
}
</per>
Produzione:
Cina:Pechino
Francia:Parigi
India:Delhi
Nepal:Katmandu

Utilizzo del ciclo for basato su intervallo con coppie chiave-valore (dalla versione C++17 in poi)

Questa versione è supportata da c++17 in poi e fornisce un modo più flessibile per l'iterazione sulla mappa. Puoi accedere esplicitamente alla coppia chiave-valore nella mappa che fornisce una soluzione ancora più leggibile.

<per>
#includere
#includere
#includere

usando spazio dei nomiore;
intprincipale() {
// Inizializza una mappa
carta geografica<stringa, stringa>paeseCapitalMap;
// Inserisce diversi elementi nella mappa
countryCapitalMap.inserire(coppia<stringa, stringa>('India','Delhi'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Nepal','Kathmandu'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Cina','Pechino'));
countryCapitalMap.inserire(coppia<stringa, stringa>('Francia','Parigi'));


// Itera usando l'iteratore nel ciclo for
per (cost auto& [chiave, valore] :paeseCapitalMap) {
costo <<chiave<< ':' <<valore<< ' ';
}

Restituzione 0;
}
</per>
Produzione:
Cina:Pechino
Francia:Parigi
India:Delhi
Nepal:Katmandu

Si tratta di come eseguire l'iterazione sulla mappa in C++. Buona codifica!