Ben böyle bir şey yapmaya çalışıyorum:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
Ancak silme ters yineleyici değil yineleyici alır. bir ters yineleyiciyi normal bir yineleyiciye dönüştürmenin veya bu öğeyi listeden kaldırmanın başka bir yolu var mı?
std::remove
?
i != m_CursorStack.rend()
. Bunun yerine yazıni = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;
. Yani, tekrarlanan karşılaştırma için etrafında tutabileceğiniz bir yineleyici başlatın - son konumun döngü gövdesinin bir yan etkisi olarak değişmeyeceğini varsayarsak.