2012-01-09 44 views
2

我是新来的使用迭代器。我已经使用了下面的代码,我使用迭代器解析列表中的所有元素,以确定元素是否存在于列表中。迭代器使用 - 林特警告

list<int> pendingRsp; 
list<int>::iterator it1; 

for(int i = 1; i <= 5; i++) 
    pendingRsp.push_back(i *10); 

for(it1 = pendingRsp.begin(); it1 != pendingRsp.end(); it1++) 
{ 
    if((*it1) == 50) 
    { 
     found = true; 
     break; 
    } 
} 

的代码工作正常,但我得到了下面的皮棉警告:

信息1702: '!=操作符'!运算符既是一个普通的函数”操作符=(常量对< < 1> ,< 2 >> &,常量对< < 1>,< 2 >> &)”和成员函数名单::为const_iterator ::运算!=(常数为const_iterator &)常量'

什么上述w^arning是什么意思?运算符在列表和迭代器中重载!=运算符的实现之间有冲突吗?

+0

与问题无关,但使用'std :: find'而不是for循环。 – 2012-01-09 09:34:40

+0

是的std :: find是一个更好的。感谢您的建议 – inquisitive 2012-01-09 09:43:25

回答

3

它的意思正是它所说的。列表迭代器是一个pairpair有一个operator!=函数,但列表迭代器类也有它自己的operator!=函数。由于两个操作符完全相同(因为在第一个元素上匹配的任何两个匹配对),所以您可以放心地忽略该警告。

+0

感谢您的回复 – inquisitive 2012-01-09 09:42:52

+0

这就是为什么我们使用组合,而不是公共继承;-) – 2012-01-09 09:52:10