Ich habe Code, der so aussieht:
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);
Ich möchte inaktive Elemente sofort nach dem Aktualisieren entfernen, um ein erneutes Durchlaufen der Liste zu vermeiden. Wenn ich jedoch die auskommentierten Zeilen hinzufüge, wird folgende Fehlermeldung i++
angezeigt: "Listeniterator nicht inkrementierbar". Ich habe einige Alternativen ausprobiert, die die for-Anweisung nicht erhöht haben, aber ich konnte nichts zum Laufen bringen.
Was ist der beste Weg, um Elemente zu entfernen, während Sie eine std :: -Liste durchlaufen?