Я пытаюсь удалить каждый 2-й элемент из целочисленного вектора в C ++
int n = 10001;
std::vector<int> sieve;
for (int i = 2; i <= n; ++i)
sieve.push_back(i);
for (int i = 2; i < sieve.size(); i += 2)
sieve.erase(sieve.begin() + i);
Я хочу удалить каждый 2-й элемент из вектора (который будет кратен 2 в диапазоне от 2 до 10001),Вывод таков:
// index, value
0 2
1 3
2 5
3 6
4 8
5 9
6 11
7 12
8 14
9 15
10 17
....
Таким образом, удаляются 4, 10 и 16, как и ожидалось.Однако все еще есть многократные 2, то есть 6, 8, 12, 14
РЕДАКТИРОВАТЬ Решено с помощью метода @Retired Ninja, размещенного в комментариях.(Сделать это в обратном порядке)
for (int i = 2; i <= n; i++)
sieve.push_back(i);
for (int i = sieve.size(); i >= p; i -= p)
sieve.erase(sieve.end() - i);