Ich möchte jedes Element in durchlaufen, map<string, int>
ohne einen seiner String-Int-Werte oder Schlüssel zu kennen.
Was ich bisher habe:
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
Kein Name
quelle
quelle
Antworten:
Sie können dies wie folgt erreichen:
Mit C ++ 11 (ff) ,
Mit C ++ 17 (ff) ,
quelle
auto const& [key, val] : symbolTable
Format gesucht !Versuche Folgendes
Das gleiche kann mit einer gewöhnlichen for-Schleife geschrieben werden
Berücksichtigen Sie, dass value_type for
std::map
folgendermaßen definiert istIn meinem Beispiel ist p also eine konstante Referenz auf den value_type, wobei Key
std::string
und T istint
Es wäre auch besser, wenn die Funktion als deklariert würde
quelle
Das
value_type
von amap
ist a undpair
enthält den Schlüssel und den Wert als esfirst
bzw.second
Mitglied.Oder mit C ++ 11 unter Verwendung von bereichsbasiert für:
quelle
Wie @Vlad aus Moskau sagt, berücksichtigen Sie, dass
value_type
für wiestd::map
folgt definiert ist:Dies bedeutet dann, dass Sie dies tun können, wenn Sie das Schlüsselwort
auto
durch einen expliziteren Typbezeichner ersetzen möchten .Nur um zu verstehen, was
auto
in diesem Fall bedeutet.quelle