Ich versuche so etwas zu tun:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
Das Löschen erfordert jedoch einen Iterator und keinen umgekehrten Iterator. Gibt es eine Möglichkeit, einen umgekehrten Iterator in einen regulären Iterator umzuwandeln, oder eine andere Möglichkeit, dieses Element aus der Liste zu entfernen?
std::remove
?
i != m_CursorStack.rend()
. Schreiben Sie stattdesseni = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;
. Initialisieren Sie also einen Iterator, den Sie für einen wiederholten Vergleich behalten können - vorausgesetzt, die Endposition ändert sich nicht als Nebeneffekt Ihres Schleifenkörpers.