简单的。
使用std::vector<int>
Or std::array<int, N>
(其中N
是编译时常量)。
如果您在编译时知道数组的大小,并且它不需要在运行时增长,那么使用std::array
. 其他使用std::vector
。
这些被称为序列容器类,它定义了一个称为size()
返回容器中元素数量的成员函数。您可以在需要知道大小时使用它。:-)
阅读文档:
使用 时,如果您对容器将容纳的元素数量有一些模糊的概念,std::vector
则应考虑使用。reserve()
这将为您带来性能优势。
如果您担心std::vector
vs raw-arrays的性能,请在此处阅读接受的答案:
它解释了为什么问题中的代码很慢,这与它本身无关std::vector
,而是它的错误使用。
如果您不能使用其中任何一个,并且被迫使用int*
,那么我建议您使用这两种替代方案。选择适合您需要的任何东西。
struct array
{
int *elements; //elements
size_t size; //number of elements
};
这是不言自明的。
第二个是这样的:为另一个元素分配内存并将大小存储在第一个元素中:
int N = howManyElements();
int *array = int new[N+1]; //allocate memory for size storage also!
array[0] = N; //store N in the first element!
//your code : iterate i=1 to i<=N
//must delete it once done
delete []array;