如何构思具有三维以上的数组?

时间:2011-04-10 06:49:46

标签: c++ arrays

我刚刚了解了数组,但无法概念化超过三维的数组。

6 个答案:

答案 0 :(得分:19)

想象一下:

  • 书中的字母
  • 书页上的行
  • 本书页面
  • 书架上的书籍
  • 一间满是书架的房间
  • 满堂的房子
  • 有许多房屋的街道
  • 一个有街道的小镇
  • 有城镇的国家
  • 有国家的星球
  • 充满行星的宇宙
  • 最后,有很多宇宙。

Viola,一个12维阵列。

答案 1 :(得分:3)

想象一系列三维立方体,一个接一个。

您还可以将其视为在不连续的时间间隔内演变的单个3D立方体。

如果你想要一个适合通常的空间(加时间)系统的心智模型,我觉得这些很有帮助,也就是那些你可以在物理世界中同时显示所有尺寸的东西。

答案 2 :(得分:3)

很少有人能够掌握第四个空间维度的样子。 如果你想尝试理解,这里有两个指示:

答案 3 :(得分:1)

多维数组不需要概念化为矩形,立方体等。还有另一种查看它们的方法。二维阵列是大小相等的一维阵列的一维阵列。三维阵列是二维阵列的一维阵列。等等。您可以将嵌套数组可视化为全部水平,或全部垂直,或者交替水平和垂直 - 无论您喜欢什么。

答案 4 :(得分:1)

如果通过“概念化”来表示“想象”,那就没关系了。我们作为3D生物,无法真正掌握更高维度的东西(我们大多数人,无论如何) 它与四元数相同,它在4D数字空间中工作,或者与图形中的剪切空间一起使用,用于将3D模型带到我们的2D屏幕上,绕过第四维度。即使大多数程序员并不真正理解这些东西,我们仍然可以使用它。但最重要的是,不要试图质疑它是如何工作的。否则你会在所有维度理论中感到迷失(至少我这样做)。


现在,就像在评论中所说的那样,4D阵列非常稀疏。如果你真的需要一个,它不会是一个四维形状,而是一个三维形状的列表。或2D阵列的2D阵列。不要将“尺寸”部分视为“空间尺寸”。想想多维数组,比如“在一对方括号[]之后,会有另一对。而另一个。等等,直到你[]的数量和维数的维数数组匹配。所以他们更像是...... :)列表的列表 假设你有一个书架,从远处看你只看到2个维度。现在当你靠近你想要的架子(arr[x][y])时,你会发现,每个架子上还有一个分区,一个书架的书架。 :)
希望能把事情搞清楚一点。欢呼声。

答案 5 :(得分:0)

查看最近的关系数据库中的一个较大的表。该表是一个恰好由列名而不是显式数字索引的数组;这些列显然是一个有限的集合,因此它们可以与非负整数一一对应,这种映射为您提供更熟悉的数组维度。