我在main()函数中有以下代码
map<int, int>::iterator myvar;
. . .
if (myvar == 1) { . . . }
但是当我编译时,我收到了这个错误:
error: no match for âoperator==â in âmyvar == 1â
我从之前编译过的同事那里继承了这段代码,所以我很好奇我是否有不正确的编译器设置或者我的Linux机器上没有安装所需的库/包。有什么想法吗?
我尝试过使用const_iterator而不是迭代器,但这似乎不够。我也尝试在声明之前添加“typename”,这也没有帮助。
这是我的g ++专栏:
g++ -Wall -Werror test.cpp -o test
答案 0 :(得分:3)
代码不正确。您无法将STL迭代器与整数进行比较。
如果您想比较键,请使用myvar->first
进行访问。如果要比较映射值,请使用myvar->second
。
答案 1 :(得分:0)
你想要做的事情并没有多大意义,迭代器不是你可以用这种方式比较的价值。你可能想做的是:
for(auto it = myVar.begin(); it != myVar.end(); myVar.next()) {
if(it == 1) {
//do something with it
}
}
或者,如果您只关心第一个值:
auto val = myVar.begin();
if(val == 1) {
//use val
}