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;
   }
}

代码工作正常,但我收到以下 Lint 警告:

信息 1702:运算符 'operator!=' 既是普通函数 'operator!=(const pair<<1>,<2>> &, const pair<<1>,<2>> &)' 又是成员函数'list::const_iterator::operator!=(const const_iterator &) const'

上面的警告是什么意思?列表中!=运算符的运算符重载实现与迭代器之间是否存在冲突?

4

1 回答 1

3

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

于 2012-01-09T09:23:20.717 回答