Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > STL and find()


Автор: TaNK 28.7.2010, 13:12
Форумчанам привет, ищу в списке (list<int>) количество вхождений значений в список, делаю так

Код

list<int> str_l;
list<int>::iterator it_l;

str_l.push_back(74);
str_l.push_back(-94);
str_l.push_back(20);
str_l.push_back(17);
str_l.push_back(24);
str_l.push_back(17);
str_l.push_back(6);
//find
int count = 0;
it_l = str_l.begin();

while (it_l != str_l.end())
{
   it_l = find(it_l, str_l.end(), 17);

   if (it_l != str_l.end())
   {
       ++count;
   }
   ++it_l;
   break;
}

cout << "Kol-vo naidennix covpadenii = " << count << endl;


после одного прохода цикла виснит, подскажите что я упустил, заранее спасибо за ответы.
Понимаю что ошибка в строке  it_l = find(it_l, str_l.end(), 17); но как исправить

Автор: djamshud 28.7.2010, 13:39
Код

while((it_l=find(it_l,str_l.end(),17))!=str_l.end()){
count++;
++it_l;}


Ваш пример у меня не не вис, но выдавал неверное значение, потому что в конце цикла зачем-то стоял break.

Автор: TaNK 28.7.2010, 13:47
Цитата(djamshud @  28.7.2010,  13:39 Найти цитируемый пост)
Ваш пример у меня не не вис, но выдавал неверное значение, потому что в конце цикла зачем-то стоял break.

break  просто забыл убрать из примера. а ваш пример сейчас посмотрю. Спасибо

Автор: EvilsInterrupt 28.7.2010, 14:29
TaNK, А почему бы не заюзать std::count_if ?

Автор: TaNK 28.7.2010, 15:19
Цитата(EvilsInterrupt @  28.7.2010,  14:29 Найти цитируемый пост)
А почему бы не заюзать std::count_if ?

Ну например потому что еще в изучении до count_if не дошел ))) 

djamshud - спасибо работает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)