Je veux parcourir chaque élément du map<string, int>
sans connaître ses valeurs ou clés string-int.
Ce que j'ai jusqu'à présent:
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
Sans nom
la source
la source
Réponses:
Vous pouvez y parvenir comme suit:
Avec C ++ 11 (et versions ultérieures) ,
Avec C ++ 17 (et versions ultérieures) ,
la source
auto const& [key, val] : symbolTable
format!Essayez ce qui suit
La même chose peut être écrite en utilisant une boucle for ordinaire
Tenez compte du fait que value_type for
std::map
est défini de la manière suivanteAinsi, dans mon exemple, p est une référence constante au value_type où Key est
std::string
et T estint
Il serait également préférable que la fonction soit déclarée comme
la source
Le
value_type
de amap
est unpair
contenant la clé et la valeur comme il estfirst
etsecond
membre, respectivement.Ou avec C ++ 11, en utilisant une plage pour:
la source
Comme le dit @Vlad de Moscou, tenez compte du fait que
value_type
forstd::map
est défini de la manière suivante:Cela signifie alors que si vous souhaitez remplacer le mot-clé
auto
par un spécificateur de type plus explicite, vous pouvez le faire;Juste pour comprendre ce qui
auto
se traduira dans ce cas.la source