[英]Creating a dynamic sized array of fixed sized int arrays in C++
出于某种原因,这给我带来了比我想象的更多麻烦......
int *myArray[3];
myArray = new int[mySize];
不起作用......
我之前以类似的方式使用过typedef并且它工作得很好,但这次我不想创建typedef
int (*myArray)[3] = new int[mySize][3];
?
有人可能会这样做:
::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];
int *myArray[3];
这意味着“ myArray
应该是一个由三个指向int的数组”。
你可能想要“ myArray
应该是一个指针 - (三个整数的数组)”。 拼写为int (*myArray)[3]
。
使用typedef这种事情要容易得多。
typedef int datum[3];
datum* myArray = new datum[mySize]; // no fuss, no muss.
但严重的是,只需使用std::vector
。 并为您的三个整数组创建一个实际的结构。 或者,如果它真的应该像数组一样,请使用boost::array
这样您至少可以获得第一类类型的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.