Я просто пытаюсь получить значения из переменной карты. Но по какой-то причине он дает ошибку: нет соответствия для "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";
}
Который дает мне ошибку. Любая идея, что происходит?
благодаря
Выражение 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;
}
Вы получаете сообщение об ошибке, потому что it->second
- это std::list
которого нет перегруженного оператора вывода.
it->second
имеет тип std::list
.
<<
не перегружается для этого. Проверьте ошибку.
Если вы хотите напечатать это, вы можете использовать свою собственную функцию.
void print_list(std::list<int> a){
for(auto i:a)
std::cout<<i<<std::endl;
}