Mam kod, który wygląda następująco:
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);
Chciałbym usunąć nieaktywne elementy natychmiast po ich aktualizacji, aby uniknąć ponownego przeglądania listy. Ale jeśli dodam skomentowane wiersze, pojawia się błąd, gdy dochodzę do i++
: „Nie można zwiększać iteratora listy”. Wypróbowałem kilka alternatyw, które nie zwiększały się w wyciągu for, ale nie mogłem nic zrobić.
Jaki jest najlepszy sposób na usunięcie przedmiotów, gdy idziesz na std :: list?