我想根据索引删除向量中的元素,例如所有偶数索引元素。 我已经了解了erase-remove惯用法,但不知道如何应用它。 这是我的尝试:
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() );
这会清空整个向量。我希望只删除已由remove算法标记的元素。
然后我尝试了这个方法。
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() );
}
}
由于在删除时索引会在迭代向量时发生变化,因此此方法无法正常工作。应采取什么正确的方法来完成这个任务。
size() - 1
? - Some programmer dudefor(std::vector<int>::iterator it = line.end(); it != line.begin(); --it)
? - Mateen Ulhaqunsigned
这个部分,只看到了int
。+1。 - AusCBloke