Цикл по Stl-коллекции, если нужно удаление
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 23.07.02 14:37
Оценка:
А как уважаемый All пишет цикл по Stl-ной коллекции, если во время этого самого цикла нужна возможность удаления текущего элемента?

Т.е. что-то такое:
for (std::list<int>::iterator it = items.begin(); it != items.end(); ++it)
{
  if (*it == 0)
    erase (it); //это есть неправильно.
}



Сейчас пишу так:
for (std::list<int>::iterator it = items.begin(), nit; it != items.end(); it = nit)
{
  nit = it; ++nit;
  if (*it == 0)
    erase (it); 
}



Как еще можно такие циклы писать?


P.S. Я знаю, что есть remove_if, но меня интересует именно for
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.