【发布时间】:2017-02-16 23:50:12
【问题描述】:
在 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++没有加入这样的内置特性?
【问题讨论】:
-
有趣的事实:Java 中的 4D 数组?它不是 4D 数组。它是整数数组数组的数组。它可能会非常缓慢,因为每个动态分配的子数组之间没有连接。 CPU 从一个分配跳到下一个分配,并且永远无法从预加载到缓存中的连续数据中获得速度。可怕的嵌套循环 C++ 解决方案做同样的事情,而且很可怕。除非您需要锯齿状数组,否则不要使用任何一种语言。围绕一维数组创建一个包装器,为您处理索引。
标签: c++ arrays multidimensional-array