Cómo iterar sobre el mapa en C ++

Cómo iterar sobre el mapa en C ++
En este tutorial rápido, veremos cómo iterar en el mapa en C++. Hay múltiples formas de iterar sobre el mapa en C++. Con versiones más nuevas de C ++, hay formas más avanzadas de iterar sobre el mapa en C++. Pasemos por cada uno por uno.

Usando para bucle con std :: map

Hemos creado un mapa llamado countrycapitalmap e insertó pares de valores de llave. Luego usamos un iterador para hacer un bucle para los miembros de la estructura de datos del mapa.

#incluir
#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()
// Inicializar un mapa
mapaCountryCapitalMap;
countrycapitalmap.insertar (par("Nepal", "Katmandú"));
countrycapitalmap.insertar (par("China", "Beijing"));
countrycapitalmap.insertar (par("Francia", "París"));
// iterar usando iterador en el bucle
para (Auto ITR = CountryCapitalMap.comenzar();
ITR != CountryCapitalMap.fin(); ITR ++)
std :: cout << itr->Primero // Clave de acceso
<< ':'
<< itr->segundo // valor de acceso
<< std::endl;

regresar 0;
Producción:
China: Beijing
Francia: París
Nepal: Katmandú

Como puede ver, hemos impreso país: capital (clave: valor) usando para bucle.

Si notas, hemos usado auto Escriba el especificador para el iterador del mapa debido a la legibilidad. Puedes usar mapa :: iterador explícitamente también.
Nota: Si ve la salida, se clasifica con claves en orden ascendente. Esto se debe a que std :: map es un contenedor asociativo ordenado con comparador suministrado (versión C ++ 11 en adelante). Dado que no proporcionamos ningún comparador, por lo que C ++ ha utilizado el comparador predeterminado para la cadena.

Usando while loop con stp :: map

También podemos usar un bucle de tiempo en lugar de para bucle.

#incluir
#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()
// Inicializar un mapa
mapa CountryCapitalMap;
// Insertar diferentes elementos en el mapa
countrycapitalmap.insertar (par("India", "Delhi"));
countrycapitalmap.insertar (par("Nepal", "Katmandú"));
countrycapitalmap.insertar (par("China", "Beijing"));
countrycapitalmap.insertar (par("Francia", "París"));
// Crear un iterador para el mapa e inicializar con Begin
Auto ITR = CountryCapitalMap.comenzar();
// iterer usando iterator en while loop
Mientras (ITR!= CountryCapitalMap.fin())

std :: cout << itr->Primero // Clave de acceso
<< ':'
<< itr->segundo // valor de acceso
<< std::endl;
ITR ++;

regresar 0;

Producción:

China: Beijing
Francia: París
India: Delhi
Nepal: Katmandú

Uso de rango basado para bucle (versión C ++ 11 en adelante)

Si está utilizando la versión C ++ 11, entonces esta es la forma más elegante de iterar sobre el mapa en C++. Puedes evitar los bucles cubiertos tradicionales y usar esto en su lugar.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()
// Inicializar un mapa
mapa CountryCapitalMap;
// Insertar diferentes elementos en el mapa
countrycapitalmap.insertar (par("India", "Delhi"));
countrycapitalmap.insertar (par("Nepal", "Katmandú"));
countrycapitalmap.insertar (par("China", "Beijing"));
countrycapitalmap.insertar (par("Francia", "París"));
// iterar usando iterador en el bucle
para (const auto y ele: countrycapitalmap)
cout <
regresar 0;
Producción:
China: Beijing
Francia: París
India: Delhi
Nepal: Katmandú

Uso de rango para el bucle con pares de valores clave (versión C ++ 17 en adelante)

Esta versión es compatible con C ++ 17 en adelante y proporciona una forma más flexible para iterar sobre el mapa. Puede acceder explícitamente al par de valores clave en el mapa que proporciona una solución aún más legible.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()
// Inicializar un mapa
mapa CountryCapitalMap;
// Insertar diferentes elementos en el mapa
countrycapitalmap.insertar (par("India", "Delhi"));
countrycapitalmap.insertar (par("Nepal", "Katmandú"));
countrycapitalmap.insertar (par("China", "Beijing"));
countrycapitalmap.insertar (par("Francia", "París"));
// iterar usando iterador en el bucle
for (const auto y [clave, valor]: countryCapitalMap)
cout << key << ":" << value << "\n";

regresar 0;
Producción:
China: Beijing
Francia: París
India: Delhi
Nepal: Katmandú

Eso se trata de cómo iterar sobre el mapa en C++.