列出地图变量中的项目

时间:2014-07-25 22:03:59

标签: c++ map

我只是想从地图变量中获取值。但由于某种原因,它给出了一个错误:'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";
    }

哪个给我错误。知道发生了什么事吗?

感谢

3 个答案:

答案 0 :(得分:3)

您收到错误,因为it->secondstd::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;
}