我想根据索引删除向量的元素,比如所有偶数索引元素。我已阅读有关擦除删除习语的信息,但看不到如何应用它。这是我尝试过的:
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() );
}
}
这再次不起作用,因为在删除时存在问题,索引似乎在迭代向量时发生了变化。完成此任务的正确方法应该是什么。