ฉันพยายามทำสิ่งนี้:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
อย่างไรก็ตามการลบจะใช้ตัววนซ้ำและไม่ใช่ตัววนซ้ำแบบย้อนกลับ มีวิธีในการแปลง reverse iterator เป็น iterator ปกติหรือวิธีอื่นในการลบองค์ประกอบนี้จากรายการ?
std::remove
?
i != m_CursorStack.rend()
ซ้ำi = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;
แต่เขียน นั่นคือเริ่มต้นตัววนซ้ำที่คุณสามารถเก็บไว้เพื่อเปรียบเทียบซ้ำ - สมมติว่าตำแหน่งสุดท้ายจะไม่เปลี่ยนแปลงตามผลข้างเคียงของร่างกายลูปของคุณ