int a[][] = new int[1][2];
a[0][0] = 1;
我的要求是在堆上分配一个多维数组,并使用它像数组而不是指针,但是当我尝试这个时,它不起作用。我希望有一种简单的方法,比如java:int[][] a = new int[1][2]
。
感谢您的帮助......
答案 0 :(得分:0)
最有效的方式就是:
int **arr = new int *arr[SIZE_X];
arr[0] = new int[SIZE_X * SIZE_Y];
for (int i = 1; i < SIZE_X; i++)
arr[i] = arr[0] + i*SIZE_Y;
祝你好运!
答案 1 :(得分:0)
可以使用
int (*arr)[M] = new int[N][M];
// M must be constant expressions that evaluate to positive value
在C ++ 11中,可以使用auto
auto arr = new int[N][M];
// M must be constant expressions that evaluate to positive value
应该释放内存
auto arr = new int[1][2];
arr[0][0] = 1;
delete[] arr;
最后但并非最不重要的是,除非你有充分的理由,否则请改用std::vector<std::vector<int>>
。