J'essaye de faire quelque chose comme ça:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
Cependant, l'effacement prend un itérateur et non un itérateur inverse. existe-t-il un moyen de convertir un itérateur inverse en itérateur régulier ou un autre moyen de supprimer cet élément de la liste?
i != m_CursorStack.rend()
. Au lieu de cela, écrivezi = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;
. Autrement dit, initialisez un itérateur que vous pouvez conserver pour des comparaisons répétées - en supposant que la position finale ne changera pas en tant qu'effet secondaire de votre corps de boucle.