5d阵列的实用性?

时间:2013-09-03 14:22:38

标签: multidimensional-array language-agnostic

在我的课程中,我必须编写一个程序来创建和添加数据到Java中的5d数组。相当容易。

但是,我想问的是:在现实生活中是否使用了5d数组?

使用如此复杂的结构会不是一个糟糕的设计?程序员不应该专注于将其变成一个更简单的数据结构吗?

5 个答案:

答案 0 :(得分:2)

为什么不呢?

五维数组是从五个索引到一个值的映射。如果您有这个确切的要求,五维数组可能是实现此映射的最有效和最可读的方式。

答案 1 :(得分:2)

过早地对抗自然发生的数据结构是没有意义的:如果您在脑海中考虑它时数据有五个维度,那么在代码中使用5D数组对其进行建模是最佳策略。

寻求不同数据结构的唯一原因是,如果您的5D阵列恰好非常稀疏:根据其性质,阵列会急切地预先分配空间,从而导致在非常稀疏的结构上使用内存。一些看似低于平均水平的空间使用可能不仅仅是通过更好的性能来支付:由于它们的简单性,数组代表了空间 - 速度交易的极端点,因此“浪费”几兆字节的空间以换取一些空间数万亿的CPU周期可能不是一件坏事。

答案 2 :(得分:2)

使用它。 对于简单的事情,因为网站不是那么多。 如果你不得不制作复杂的物理学(广义相对论,计算化学,量子物理学)或数学应用。可能有足够的理由这样做。 例如:Tensor applications

在Matlab中,人们一直使用4d矩阵。

使用高维数组当然有不好的例子仅用于索引目的。

糟糕练习的一个例子:

$clothes["type"]["color"]["price"]["size"] = ...
@Renan在评论中说,它是关于如何应用高维数组的。

答案 3 :(得分:1)

根据我的经验,通常3D以上的东西都不受欢迎。通常更有意义的是开始将事物分解为类/结构而不是通过数字索引进行索引。我从未见过具有超过4个数字可索引维度的数据集。我前几天看到的流体动力学应用程序使用float[][][][]进行计算。

实际上,它归结为您的数据是实际 5D,还是只是将可以更好地表示为嵌套类/结构的数据映射到数组上。

答案 4 :(得分:1)

你是对的,如果有一个更简单的结构选项,那么它可能应该被调查。然而,有些时候性能超过简单性(3D图形?数据库引擎?无数其他例子)并且保持简单不是一种选择。

大多数情况下你会遇到建筑物购物网站的数据可以制作2D - 它毕竟适合数据库表,因此其他人发布的示例并不完全相关(衣服[颜色] [类型] ] ...) - 这只是一个包含此类列的2D数据库表。

在极少数情况下需要更高维度的数据(我甚至不能想到一个!)我很确定你会认识到它,因为尽管有可能,但使用较低尺寸的固有困难会带来