我正在尝试做这样的事情:
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;
。也就是说,初始化一个迭代器,您可以保留该迭代器以进行重复比较-假设最终位置不会因为循环体的副作用而改变。