在C++中创建一个动态大小的固定大小的int数组

kbi*_*irk 2 c++ memory arrays fixed

出于某种原因,这给我带来了比我想象的更多麻烦......

int *myArray[3];

myArray = new int[mySize];
Run Code Online (Sandbox Code Playgroud)

不起作用......

我之前以类似的方式使用过typedef并且它工作得很好,但这次我不想创建typedef

小智 6

int (*myArray)[3] = new int[mySize][3];
Run Code Online (Sandbox Code Playgroud)


Omn*_*ous 6

有人可能会这样做:

::std::vector<int[3]> myArray;
Run Code Online (Sandbox Code Playgroud)

因为vector动态大小的数组非常好用.不幸的是,虽然该声明有效,但结果vector却无法使用.

如果你有::std::array(一个C++ 11特性)并且它实际上可以工作,这将同样有效:

::std::vector< ::std::array<int, 3> > myArray;
Run Code Online (Sandbox Code Playgroud)

如果你能做到这一点,我强烈推荐它.vector处理比你必须分配的数组更好,更安全new.

否则,试试这个:

typedef int inner_array_t[3];
inner_array_t *myArray = new inner_array_t[mySize];
Run Code Online (Sandbox Code Playgroud)

因为你不想出于某些奇怪的原因使用typedef,你可以像这样解开它:

int (*myArray)[3] = new int[mySize][3];
Run Code Online (Sandbox Code Playgroud)