Estou tentando fazer algo assim:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
No entanto, apagar exige um iterador e não um iterador reverso. existe uma maneira de converter um iterador reverso em um iterador regular ou outra maneira de remover esse elemento da lista?
std::remove
?
i != m_CursorStack.rend()
. Em vez disso, escrevai = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;
. Ou seja, inicialize um iterador que você pode manter para comparação repetida - supondo que a posição final não seja alterada como efeito colateral do seu corpo em loop.