А как уважаемый 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