Eu quero percorrer cada elemento no map<string, int>
sem conhecer nenhum dos seus valores ou chaves string-int.
O que tenho até agora:
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
NoName
fonte
fonte
Respostas:
Você pode conseguir isso da seguinte maneira:
Com o C ++ 11 (e em diante) ,
Com o C ++ 17 (e em diante) ,
fonte
auto const& [key, val] : symbolTable
formato!Tente o seguinte
O mesmo pode ser escrito usando um loop for comum
Leve em consideração que value_type for
std::map
é definido da seguinte maneiraAssim, no meu exemplo, p é uma referência const ao value_type em que Key é
std::string
e T éint
Também seria melhor se a função fosse declarada como
fonte
O
value_type
de amap
é umpair
contendo a chave e o valor como éfirst
esecond
membro, respectivamente.Ou com C ++ 11, usando o intervalo para:
fonte
Como o @Vlad de Moscou diz, leve em consideração que
value_type
parastd::map
está definido da seguinte maneira:Isso significa que, se você deseja substituir a palavra
auto
- chave por um especificador de tipo mais explícito, poderá fazê-lo;Apenas para entender o que
auto
será traduzido neste caso.fonte