int m;
//m是一个变量,在程序运行中得到其值,定义一个二维数组,其中有一维依赖于m;
(1) array[m][n]
int (*array)[n];
array = new int[m][n];
(2) array[n][m]
int* array[n];
for (int i = 0; i < n; ++i)
array[i] = new int[m];
也可以只使用一次 new:
array[0] = new int[m*n];
for (int i = 1; i < n; ++i)
{
array[i] = array[0] + m * i;
array[i] = array[0] + m * i;
}
这样就只要一次 delete 了。
(3) 如果m和n都为动态,则可以通过两次 new 来实现:
int** array; // m*n
array = new (int*)[m];
array[0] = new int[m*n];
for (int i = 1; i < m; ++i)
int** array; // m*n
array = new (int*)[m];
array[0] = new int[m*n];
for (int i = 1; i < m; ++i)
{
array[i] = array[0] + n * i;
array[i] = array[0] + n * i;
}