我只是想从地图变量中获取值。但由于某种原因,它给出了一个错误:'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";
}
哪个给我错误。知道发生了什么事吗?
感谢
答案 0 :(得分:3)
您收到错误,因为it->second
是std::list
,并没有为其重载输出运算符。
答案 1 :(得分: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;
}
答案 2 :(得分:2)
it->second
的类型为std::list
。
<<
没有超载.Hence错误。
如果您想要打印它,可以使用自己的功能。
void print_list(std::list<int> a){
for(auto i:a)
std::cout<<i<<std::endl;
}