我该如何更改此声明?

sam*_*moz 3 c++ arrays resize

我收到了一个带有以下声明的标题:

//The index of 1 is used to make sure this is an array.
MyObject objs[1];
Run Code Online (Sandbox Code Playgroud)

但是,我需要在程序启动时动态调整此数组的大小.我认为我应该将它声明为MyObject*objs;,但我想如果原始程序员以这种方式声明它,那么它有一些原因.

无论如何我可以动态调整大小吗?或者我应该将它更改为指针然后malloc()吗?

我可以以某种方式使用一些新的关键字吗?

Jud*_*den 16

使用STL向量:

#include <vector>

std::vector<MyObject> objs(size);
Run Code Online (Sandbox Code Playgroud)

向量是动态数组,是标准模板库的一部分.当您对象推回到阵列中时,它会自动调整大小,并且可以像[]操作员一样使用普通的C数组进行访问.此外,&objs[0]保证指向内存中的连续序列 - 与列表不同- 如果容器不为空.


Mel*_*een 6

你说的没错.如果要动态实例化其大小,则需要使用指针.

(既然你正在使用C++,为什么不使用new运算符而不是malloc?)

MyObject* objs = new MyObject[size];
Run Code Online (Sandbox Code Playgroud)