Şuna benzeyen bir kod var:
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);
Listeyi tekrar yürümekten kaçınmak için etkin olmayan öğeleri güncelledikten hemen sonra kaldırmak istiyorum. Ancak yorum satırları eklerseniz, i++
"Liste yineleyici artırılmaz değil" aldığımda bir hata alıyorum . For ifadesinde artmayan bazı alternatifler denedim, ancak çalışacak bir şey alamadım.
Bir std :: listeyi yürürken eşyaları kaldırmanın en iyi yolu nedir?