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.
#incluirProducción:
#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;
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
mapaCountryCapitalMap;
// 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: BeijingUso 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.
#incluirProducción:
#incluir
#incluir
usando el espacio de nombres STD;
int main ()
// Inicializar un mapa
mapaCountryCapitalMap;
// 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;
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.
#incluirProducción:
#incluir
#incluir
usando el espacio de nombres STD;
int main ()
// Inicializar un mapa
mapaCountryCapitalMap;
// 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;
Eso se trata de cómo iterar sobre el mapa en C++.