Использование итератора - предупреждение Lint - PullRequest
2 голосов
/ 09 января 2012

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

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! =' является оператором как обычной функции! = (const pair << 1>, <2 >> &, const pair << 1>,<2 >> &) 'и функция-член' list :: const_iterator :: operator! = (Const const_iterator &) const '

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

1 Ответ

3 голосов
/ 09 января 2012

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

...