Saya mencoba melakukan sesuatu seperti ini:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
Namun menghapus membutuhkan iterator dan bukan iterator terbalik. apakah ada cara untuk mengubah iterator terbalik menjadi iterator biasa atau cara lain untuk menghapus elemen ini dari daftar?
std::remove
?
i != m_CursorStack.rend()
. Sebaliknya, tulislahi = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;
. Yaitu, inisialisasi iterator yang dapat Anda pertahankan untuk perbandingan berulang - dengan asumsi bahwa posisi akhir tidak akan berubah sebagai efek samping dari tubuh loop Anda.