Quiero iterar a través de cada elemento en el map<string, int>sin conocer ninguno de sus valores o claves string-int.
Lo que tengo hasta ahora:
void output(map<string, int> table)
{
map<string, int>::iterator it;
for (it = table.begin(); it != table.end(); it++)
{
//How do I access each element?
}
}
c++
dictionary
Sin nombre
fuente
fuente

Respuestas:
Puede lograr esto de la siguiente manera:
Con C ++ 11 (y en adelante) ,
Con C ++ 17 (y en adelante) ,
fuente
auto const& [key, val] : symbolTableformato!Intenta lo siguiente
Lo mismo se puede escribir usando un ciclo for ordinario
Tenga en cuenta que value_type para
std::mapse define de la siguiente maneraPor lo tanto, en mi ejemplo, p es una referencia constante al valor_tipo donde Key es
std::stringy T esintTambién sería mejor si la función se declarara como
fuente
El
value_typede amapes un quepaircontiene la clave y el valor como esfirstysecondmiembro, respectivamente.O con C ++ 11, utilizando un rango basado para:
fuente
Como dice @Vlad de Moscú, tenga en cuenta que
value_typeparastd::mapse define de la siguiente manera:Esto significa que si desea reemplazar la palabra clave
autocon un especificador de tipo más explícito, entonces podría hacerlo ;Solo por entender a qué
autose traducirá en este caso.fuente