インデックスに基づいてベクトルの要素、たとえばすべての偶数インデックス要素を削除したかったのです。消去削除イディオムについて読みましたが、適用方法がわかりません。これは私が試したものです:
vector<int> line;
line.reserve(10);
for(int i=0;i<10;++i)
{
line.push_back(i+1);
}
for(unsigned int i=0;i<line.size();++i)
{
//remove the even indexed elements
if(i%2 == 0)
{
remove(line.begin(),line.end(),line[i]);
}
}
line.erase( line.begin(),line.end() );
これにより、ベクトル全体が消去されます。削除アルゴリズムによってマークされた要素のみを削除することを望んでいました。
それから私はこれを試しました
for(unsigned int i=0;i<line.size();++i)
{
//remove the even indexed elements
if(i%2 == 0)
{
line.erase( remove(line.begin(),line.end(),line[i]),line.end() );
}
}
削除中に問題があるため、これも機能しません。ベクトルを反復処理している間にインデックスがシフトしているように見えます。これを達成するための正しいアプローチは何ですか。