无论如何在c ++中使用如下所示的数组

时间:2015-03-09 10:07:11

标签: c++ multidimensional-array

int a[][] = new int[1][2];
a[0][0] = 1;

我的要求是在堆上分配一个多维数组,并使用它像数组而不是指针,但是当我尝试这个时,它不起作用。我希望有一种简单的方法,比如java:int[][] a = new int[1][2]

感谢您的帮助......

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>>