список элементов из переменной карты

0

Я просто пытаюсь получить значения из переменной карты. Но по какой-то причине он дает ошибку: нет соответствия для "operator <<" в ошибке "std :: operator <<. Вот фрагмент моего кода.

std::map <string, list<int> > gradeList;
....
gradeList.insert(std::make_pair("A", itemVal));

И после этого я пытаюсь распечатать его с помощью цикла for

for(map<string, list<int> >::iterator it = gradeList.begin(); it != gradeList.end(); ++it) {
        cout << it->first << " " << it->second <<  "\n";
    }

Который дает мне ошибку. Любая идея, что происходит?

благодаря

  • 1
    если 'second' - это список, вы должны повторить и это
Теги:
map

3 ответа

2
Лучший ответ

Выражение it->second имеет тип std::list<int>. operator << перегружен для объекта типа std::list. У вас есть, по крайней мере, также использовать цикл, который выводит элементы списка.

Например

for(map<string, list<int> >::iterator it = gradeList.begin(); it != gradeList.end(); ++it) {
        cout << it->first << ":";
        for ( int x : it->second ) cout << ' ' << x;
        cout << endl;
    }
3

Вы получаете сообщение об ошибке, потому что it->second - это std::list которого нет перегруженного оператора вывода.

2

it->second имеет тип std::list.

<< не перегружается для этого. Проверьте ошибку.

Если вы хотите напечатать это, вы можете использовать свою собственную функцию.

void print_list(std::list<int> a){
    for(auto i:a)
        std::cout<<i<<std::endl;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню