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] : symbolTable
formato!Intenta lo siguiente
Lo mismo se puede escribir usando un ciclo for ordinario
Tenga en cuenta que value_type para
std::map
se define de la siguiente maneraPor lo tanto, en mi ejemplo, p es una referencia constante al valor_tipo donde Key es
std::string
y T esint
También sería mejor si la función se declarara como
fuente
El
value_type
de amap
es un quepair
contiene la clave y el valor como esfirst
ysecond
miembro, respectivamente.O con C ++ 11, utilizando un rango basado para:
fuente
Como dice @Vlad de Moscú, tenga en cuenta que
value_type
parastd::map
se define de la siguiente manera:Esto significa que si desea reemplazar la palabra clave
auto
con un especificador de tipo más explícito, entonces podría hacerlo ;Solo por entender a qué
auto
se traducirá en este caso.fuente