Я хочу перебрать каждый элемент, map<string, int>
не зная ни одного из его значений или ключей string-int.
Что у меня так далеко:
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
Без имени
источник
источник
Ответы:
Вы можете достичь этого следующим образом:
С C ++ 11 (и далее) ,
С C ++ 17 (и далее) ,
источник
auto const& [key, val] : symbolTable
формат!Попробуйте следующее
То же самое можно написать с помощью обычного цикла for
Примите во внимание, что value_type для
std::map
определяется следующим образомТаким образом, в моем примере p является константной ссылкой на value_type, где Key является,
std::string
а T являетсяint
Также было бы лучше, если бы функция была объявлена как
источник
value_type
В Аmap
являетсяpair
содержащий ключ и значение , как этоfirst
иsecond
члена, соответственно.Или с C ++ 11, используя диапазон для:
источник
Как говорит @Vlad из Москвы, учтите, что
value_type
forstd::map
определяется следующим образом:Это означает, что если вы хотите заменить ключевое слово
auto
более явным спецификатором типа, вы можете это сделать;Просто для понимания, что
auto
будет переводиться в этом случае.источник