C++ Boucle à travers la Carte
Je veux pour itérer sur chaque élément de la map<string, int>
sans savoir tout de sa chaîne de valeurs int ou des clés.
Ce que j'ai à ce jour:
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?
}
}
- Double Possible de Comment faire une boucle par le biais d'un c++ map
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire comme suit :
Avec C++11 ( et au-delà ),
Avec C++17 ( et au-delà ),
auto const& [key, val] : symbolTable
format!Essayez ce qui suit
La même chose peut être écrite en utilisant une simple boucle for
Prendre en compte le fait que value_type pour
std::map
est définie de la manière suivanteDonc dans mon exemple, p est une constante référence à la value_type où la Clé est
std::string
et T estint
Aussi il serait mieux si la fonction est déclarée comme
La
value_type
d'unmap
est unpair
contenant la clé et la valeur comme c'estfirst
etsecond
membre, respectivement.Ou avec C++11, à l'aide de gamme à base de:
Comme @Vlad de Moscou dit,
Prendre en compte le fait que
value_type
pourstd::map
est définie de la manière suivante:Ensuite, cela signifie que si vous souhaitez remplacer le mot-clé
auto
avec un plus explicite spécificateur de type, puis vous pourrait-il;Juste pour comprendre ce qui
auto
traduira dans ce cas.