ฉันมีรหัสที่มีลักษณะดังนี้:
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);
ฉันต้องการลบรายการที่ไม่ใช้งานทันทีหลังจากอัปเดตพวกเขาเพื่อหลีกเลี่ยงการเดินรายการอีกครั้ง แต่ถ้าฉันเพิ่มบรรทัดที่ถูกคอมเม้นท์ออกฉันจะได้รับข้อผิดพลาดเมื่อไปถึงi++
: "List iterator ไม่สามารถเพิ่มได้" ฉันลองใช้ตัวเลือกอื่นซึ่งไม่ได้เพิ่มในคำสั่ง for แต่ฉันไม่สามารถทำงานอะไรได้
เป็นวิธีที่ดีที่สุดในการลบรายการในขณะที่คุณกำลังเดินรายการ std :: อะไร