我正在尝试从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
编辑已解决的方法@退役忍者在评论中张贴。(反向操作)
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);
https://stackoverflow.com/questions/56745090
复制相似问题