gpt4 book ai didi

c++ - 从 vector 中删除满足条件的元素

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:55 26 4
gpt4 key购买 nike

我正在尝试对埃拉托色尼筛法进行编程,但我不确定如何从给定特定条件的 vector 中删除元素。有谁知道如何实现这一目标?这是我的代码:

#include <iostream>
#include <vector>

using namespace std;

int prime(int n);

int prime(int n)
{
vector<int> primes;

for(int i = 2; i <= n; i++)
{
primes.push_back(i);
int t = i % (i + 1);

if(t == 0)
{
delete t; // is there a way of deleting the elements from
// the primes vector that follow this condition t?
}

cout << primes[i] << endl;
}
}

int main()
{
int n;
cout << "Enter a maximum numbers of primes you wish to find: " << endl;
cin >> n;
prime(n);

return 0;
}

最佳答案

你的算法是错误的:

t = i % (i + 1); 

i

它总是 != 0 因为 i 大于 1。顺便说一下,如果你绝对想删除第 t 个元素,你必须确保 vector 不为空,然后你这样做:

primes.erase(primes.begin()+t);

即使您修复了算法,您的方法也是低效的:删除 vector 中间的一个元素意味着将一个位置的所有元素都复制回被删除的元素之后。

关于c++ - 从 vector 中删除满足条件的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30882456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com