Saya punya kode yang terlihat seperti ini:
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);
Saya ingin menghapus item yang tidak aktif segera setelah memperbaruinya, inorder untuk menghindari berjalan daftar lagi. Tetapi jika saya menambahkan baris komentar, saya mendapatkan kesalahan ketika saya sampai ke i++
: "Daftar iterator not incrementable". Saya mencoba beberapa alternatif yang tidak bertambah dalam pernyataan untuk, tapi saya tidak bisa mendapatkan apa pun untuk bekerja.
Apa cara terbaik untuk menghapus item saat Anda berjalan di std :: list?