मैं ऐसा कुछ करने की कोशिश कर रहा हूं:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
हालांकि मिटा एक पुनरावृत्ति लेता है और रिवर्स पुनरावृत्ति नहीं। क्या एक रिवर्स पुनरावृत्ति को एक नियमित पुनरावृत्ति में बदलने का एक तरीका है या इस तत्व को सूची से हटाने का कोई अन्य तरीका है?
std::remove?

i != m_CursorStack.rend()। इसके बजाय, लिखेंi = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;। यही है, एक पुनरावृत्त को इनिशियलाइज़ करें जिसे आप बार-बार तुलना के लिए रख सकते हैं - यह मानते हुए कि अंतिम स्थिति आपके लूप बॉडी के साइड इफेक्ट के रूप में नहीं बदल रही है।