私はこのようなことをやろうとしています:
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;
ます。つまり、繰り返し比較するために保持できるイテレータを初期化します-ループ本体の副作用として終了位置が変化しないことを前提とします。