无边界阵列?

时间:2011-01-19 22:17:04

标签: c++ primes

我遇到了一些麻烦。我写了一个代码来查找一个数字的素数,但由于某种原因,它给了我一个错误,我没有定义我将使用的数组中的元素数量。是否可以使用不限制元素数量的数组?谢谢:))

#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
using namespace std;
int primer(int max);
int main()
{
    system("pause");
    return 0;
    primer(1000);
}

int primer(int max){
    int a[]=2;
    for (int i=2;i<=max;i++){
    prime=true;
    for (int ii=1;ii<=#a;ii++) {
    if i/a[ii]==math.floor(i/a[ii]) {
    prime=false;
    }
    }
    if prime==true {
    a[#a+1]=i;
    }
    }
    for (i=1;i<=#a;i++) {
    print(a[i]);
    }
}
}

4 个答案:

答案 0 :(得分:6)

是。使用std::vectorstd::deque

答案 1 :(得分:1)

你到处使用的这个#符号是什么?

您的第int a[]=2行不正确。

您需要指定数组的大小。例如,int a[100]int a[] = {Values here}

话虽这么说,你可能想要一个像vector类一样的灵活大小的数组。

答案 2 :(得分:1)

编译器需要知道要分配多少空间,因此需要您说明您拥有的元素数量。

您可以尝试使用STL向量而不是数组。这允许您根据需要添加任意数量的元素,而无需在开头声明数字。

http://www.cplusplus.com/reference/stl/vector/vector/

答案 3 :(得分:1)

如果只是为数组分配的内存量,你总是'有限'。

话虽如此,使用std::vector可能会没问题。