Han*_*n M 3 c++ arrays multidimensional-array
在C++中,我觉得非常不方便的是C++没有内置的功能来在运行时为多维数组动态分配内存.
在Java中,我们可以通过一行代码来完成.例如,在Java中,我们可以为4D整数数组动态分配内存
int a, b, c, d;
std::cin>>a>>b>>c>>d;
int[ ][ ][ ][ ] array = new int[a][b][c][d];
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索解决方案在C++中做同样的事情.但是我发现,在C++中,我们必须使用嵌套循环,容器或一些带有函数的结构来实现相同的功能.由于这样的语法功能非常方便,我想问一下为什么C++没有包含这样的内置功能?
在C++中,您还可以通过这种方式分配内存.例如 :)
auto array = new int[3][4][5][6];
Run Code Online (Sandbox Code Playgroud)
或者那是一样的
int ( *array )[4][5][6] = new int[3][4][5][6];
Run Code Online (Sandbox Code Playgroud)
或者您可以使用类似的typedef
typedef int T[4][5][6];
// or
// using T = int[4][5][6];
T *array = new T[3];
Run Code Online (Sandbox Code Playgroud)
问题是除了最左边的方块中的表达式必须是常量表达式.