我正在尝试这样做:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}然而,erase需要一个迭代器,而不是反向迭代器。有没有一种方法可以将反向迭代器转换为常规迭代器,或者另一种方法将该元素从列表中删除?
发布于 2012-09-22 01:04:21
我只想澄清一些事情:在上面的一些评论和答案中,erase的可移植版本被提到为(++i).base()。但是,除非我遗漏了什么,否则正确的语句是(++ri).base(),这意味着您可以‘递增’reverse_iterator (而不是迭代器)。
昨天我遇到了做类似事情的需要,这篇文章很有帮助。谢谢大家。
https://stackoverflow.com/questions/1830158
复制相似问题