Tôi đã có mã trông như thế này:
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);
Tôi muốn xóa các mục không hoạt động ngay sau khi cập nhật chúng, inorder để tránh đi lại danh sách. Nhưng nếu tôi thêm các dòng nhận xét, tôi sẽ gặp lỗi khi nhận được i++
: "Danh sách trình lặp không thể tăng". Tôi đã thử một số lựa chọn thay thế không tăng trong tuyên bố, nhưng tôi không thể làm gì được.
Cách tốt nhất để xóa các mục khi bạn đang đi trong danh sách std :: là gì?