出于某种原因,这给我带来了比我想象的更多的麻烦......
int *myArray[3];
myArray = new int[mySize];
不工作...
我以前以类似的方式使用过 typedef,它工作得很好,但这次我不想创建 typedef
最佳答案
人们可能会想这样做:
::std::vector<int[3]> myArray;
因为 vector
非常适合动态大小的数组。不幸的是,虽然该声明有效,但生成的 vector
无法使用。
如果你有 ::std::array
(一个 C++11 特性),这将同样有效,并且它会实际工作:
::std::vector< ::std::array<int, 3> > myArray;
如果你能做到这一点,我强烈推荐它。 vector
比您必须使用 new
分配给自己的数组处理起来更好更安全。
否则,试试这个:
typedef int inner_array_t[3];
inner_array_t *myArray = new inner_array_t[mySize];
由于某些奇怪的原因你不想使用 typedef,你可以像这样打开它:
int (*myArray)[3] = new int[mySize][3];
关于c++ - 在 C++ 中创建固定大小的 int 数组的动态大小数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8529359/