map <int,int =“”> :: iterator的编译错误,不匹配operator = </int,>

时间:2014-04-25 22:35:30

标签: c++ map compiler-errors iterator g++

我在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

2 个答案:

答案 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
}