Я намагаюся зробити щось подібне:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
Однак стирання приймає ітератор, а не зворотний ітератор. чи є спосіб перетворити зворотний ітератор у звичайний ітератор чи іншим способом видалити цей елемент зі списку?
std::remove
?
i != m_CursorStack.rend()
. Натомість пишітьi = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;
. Тобто ініціалізуйте ітератор, який ви можете тримати навколо для неодноразового порівняння - припускаючи, що кінцеве положення не зміниться як побічний ефект вашого петлі.