Я хотел удалить элементы вектора на основе индекса, скажем, все четные индексированные элементы.
Я читал об идиоме удаления стирания, но не вижу, как ее применить.
Вот что я попробовал:
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() );
}
}
Это опять не работает, так как при удалении возникает проблема, индексы, похоже, сдвигаются при переборе по вектору.
Какой должен быть правильный подход для достижения этой цели.