std::vector::erase()
逆イテレータを受け入れません。
このメソッドを逆イテレータで呼び出す方法はありますか?
私のサンプルコードは次のとおりです。
std::vector<int> MyVector;
for (int i=0; i<10; i++)
{
MyVector.push_back(i);
}
// Now suppose that I want to erase the last three elements
int nEraseCount = 0;
for (std::vector<int>::const_reverse_iterator it=MyVector.rbegin();
it<MyVector.rend(); ++it)
{
MyVector.erase(it);
if (++nEraseCount == 3) break;
}
ただし、it
は逆イテレータでありerase()
、引数として逆イテレータを使用しないため、このサンプルコードは機能していません。
このコードを変更して機能させるにはどうすればよいですか?