У меня есть код, который выглядит так:
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, но я не мог заставить что-либо работать.
Какой лучший способ удалить элементы, когда вы ходите по стандартному списку?