在今天,我问了一个关于用2D阵列实现Eratosthenes筛子的问题,并且有几个人告诉我使用向量代替 . 唯一的问题是我不知道如何在C中使用向量 .
我今天使用向量而不是2D数组重写了我的程序,直到程序结束时我才收到以下错误:
sieve.h:在函数'void printPrimes(std :: vector *,int)':sieve.h:42:20:error:'std :: cout << 中不匹配'operator <
我之前从未收到过此类错误消息,因此我不确定如何解决此问题 .
这是我修改后的代码:
筛子
#include
#include
#include
#include
using namespace std;
vector calc_primes(int);
void printPrimes(int[]);
vector calc_primes(int max)
{
vector primes;
for(int i = 2; i < max; i++)
{
primes.push_back(i);
}
// for each value in the vector
for(int i = 0; i < primes.size(); i++)
{
//get the value
int v = primes[i];
if (v!=0) {
//remove all multiples of the value
int x = i+v;
while(x < primes.size()) {
primes[x]=0;
x = x+v;
}
}
}
return primes;
}
void printPrimes(vector* primes, int size)
{
int primearray[size];
for(int i = 0; i < size; i++)
{
cout<
}
}
sieve.cpp
#include "sieve.h"
using namespace std;
int main()
{
int max;
cout<
cin>>max;
vector primes = calc_primes(max);
printPrimes(primes, max);
return 0;
}