Estoy tratando de hacer algo como esto:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
Sin embargo, borrar toma un iterador y no un iterador inverso. ¿Hay alguna forma de convertir un iterador inverso en un iterador regular u otra forma de eliminar este elemento de la lista?
i != m_CursorStack.rend()
. En cambio, escribei = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;
. Es decir, inicialice un iterador que pueda mantener para comparar repetidamente, suponiendo que la posición final no cambiará como un efecto secundario de su cuerpo de bucle.std::remove
?