我已经看过:
How do I declare a 2d array in C++ using new?
但是答案似乎都没有回答“如何使用新**声明** 2D数组?”这个问题。
所有答案似乎都通过声明指针数组或通过声明行*列大小的单维数组然后明确使用行,列计算来显示替代方案。
但是有没有办法在c ++中直接在堆中分配2D数组,就像我们在堆栈中一样?
示例:
int stackarray[3][2];
//Is there some equivalent to above?? Like :
= new int [3] [2];
答案 0 :(得分:3)
但是有没有办法在c ++中直接在堆中分配2D数组,就像我们在堆栈中一样?
是
方法1(C ++ 11或更高版本)
int (*arr)[2] = new int[3][2];
方法2
arr
int [2]
是指向 int
的指针,即 2 arr[0][0] -- arr[2][1]
s 的数组。通过该分配,访问2D数组元素的有效索引为typedef int ARRAY1[2];
ARRAY1* arr = new ARRAY1[3];
方法3
using ARRAY1 = int[2];
ARRAY1* arr = new ARRAY1[3];
或者如果使用C ++ 11或更高版本,
{{1}}