나는 이런 식으로하려고합니다.
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;
. 즉, 루프 바디의 부작용으로 끝 위치가 변경되지 않는다고 가정 할 때 반복 비교를 위해 유지할 수있는 반복자를 초기화하십시오.