У меня есть код, который выглядит так:
for (std::list<item*>::iterator i=items.begin();i!=items.end();i++)
{
bool isActive = (*i)->update();
//if (!isActive)
// items.remove(*i);
//else
other_code_involving(*i);
}
items.remove_if(CheckItemNotActive);
Я хочу удалить неактивные элементы сразу после их обновления, чтобы избежать повторного просмотра списка. Но если я добавлю прокомментированные строки, я получаю сообщение об ошибке, когда я доберусь до i++
: "Список итераторов не увеличивается". Я попробовал несколько альтернатив, которые не увеличивались в инструкции for, но я не мог заставить ничего работать.
Какой лучший способ удалить элементы при ходьбе по std:: list?