Использование итератора — предупреждение Lint

Я новичок в использовании итераторов. Я использовал приведенный ниже код, где я анализирую все элементы в списке с помощью итератора, чтобы определить, существует ли элемент в списке или нет.

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!=(constpair‹‹1>,‹2>> &, constpair‹‹1>,‹2>> &)', так и функцией-членом 'list::const_iterator::operator!=(const const_iterator &) const'

Что означает приведенное выше предупреждение? Это конфликт между оператором, перегружающим реализацию оператора != в списке и итераторе?


person inquisitive    schedule 09.01.2012    source источник
comment
Ничего общего с вопросом, но используйте std::find вместо цикла for.   -  person Jesse Good    schedule 09.01.2012
comment
Да, std::find лучше. Спасибо за предложение   -  person inquisitive    schedule 09.01.2012


Ответы (1)


Это означает именно то, что он говорит. Итератор списка — это pair, а pair имеет функцию operator!=, но класс итератора списка также имеет свою собственную функцию operator!=. Поскольку оба оператора делают одно и то же (поскольку любые две пары, совпадающие в первом элементе, совпадают и во втором), вы можете спокойно игнорировать это предупреждение.

person David Schwartz    schedule 09.01.2012
comment
И именно поэтому мы используем композицию, а не публичное наследование ;-) - person Steve Jessop; 09.01.2012