Closed. This question is opinion-based。它当前不接受答案。












想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

3年前关闭。



Improve this question




在C++中,我感到非常不便,因为C++没有内置功能来在运行时为多维数组动态分配内存。

在Java中,我们只需一行代码即可完成。例如,在Java中,我们可以使用以下命令为4D整数数组动态分配内存:
int a, b, c, d;
std::cin>>a>>b>>c>>d;
int[ ][ ][ ][ ] array = new int[a][b][c][d];

我用谷歌搜索解决方案以在C++中执行相同的操作。但是我发现,在C++中,我们必须使用嵌套循环,容器或带有函数的某些结构来实现相同的目的。由于这样的语法功能非常方便,我想问一下为什么C++没有合并这样的内置功能?

最佳答案

在C++中,您也可以通过这种方式分配内存。例如 :)

auto array = new int[3][4][5][6];

还是一样
int ( *array )[4][5][6] = new int[3][4][5][6];

或者您可以使用像
typedef int T[4][5][6];
// or
// using T = int[4][5][6];

T *array = new T[3];

问题在于除最左边以外的正方形中的表达式必须是常数表达式。

07-24 14:15