C#/C++ : How to visualize muli-dimensional arrays

标签 c# c++ arrays jagged-arrays

例如:一个二维数组可以想象成一堵方砖砌成的砖墙,其中每 block 砖代表我们数组中的一个坐标。 3 维数组可以同样的方式可视化为一个盒子或立方体。

但是,这是棘手的部分,您如何可视化具有多个(超过 3 个)维度的数组?或者,对于该部分,您如何可视化一个不仅具有多个维度,而且在多个层​​中具有多个维度的数组?

例如:如何可视化这样的数组:Array[3,3,3,3][3,3][3,3,3,3,3][3]?

最佳答案

如何可视化数组实际上取决于它们的实际用途。如果您将数组用于空间关系,那么您可以将其想象成一个立方体,但您也不再需要想象超过 3 个维度。如果您真的想要实现第四个时间维度,您可以想象您的立方体的内容随着时间的推移而变化。

否则,您可能会跟踪密切相关的记录。或许每一个一级元素都是星系,二级元素是星团,三级元素是太阳系,四级元素是行星,五级元素是大陆……

在这种情况下,您可以想象它是数组中的数组。如果你需要一个 4 维数组那么你可以想象一个立方体,但每个子立方体实际上是一个一维数组。

如果您需要一个 5 维数组,那么您可以想象一个立方体,但每个子立方体都被分成您的“砖墙”示例。

6 维是一个立方体,每个子立方体都是它自己的分割立方体。

这往往会在 6 个维度后分崩离析。除此之外,通常还有一个更实际的原因,即您需要这么多维度。例如,像 eHarmony 这样的网站通过在 20+ 维空间上使用普通几何来进行匹配。你有一个维度“幽默”,一个维度“好看”,一个维度“喜欢购物”......然后你可以带两个人并应用距离公式(平方每个维度差异,添加这些差异,平方根) 并确定两个人的兼容性如何。因此,如果一个人在我们的 9 维人格矩阵上得分为“5、3、9、2、8、4、7、3、1”,而另一个人得分为“9、3、7、1、8、2、8、4” , 7"那么你的兼容性是:

sqrt((5-9)^2+(3-3)^2+(9-7)^2+...)

这可以应用于无限维度并且仍然有效。然而,由于这些维度不适用于空间,因此没有必要将它们想象成这样。相反,在这种特殊情况下,我们实际上可以将其想象成一个具有多个整数值的一维数组。请注意,我们之所以可以简化这个数组,是因为我们的多维数组只包含一个“1”,其余所有都是“0”(表示这个人在这个数组中的位置)。

抛开 eHarmony 示例,重点是 - 在一定数量的维度之后,您通常对阵列有实际用途,这有助于采用一种感知它的方法。

关于C#/C++ : How to visualize muli-dimensional arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221055/

相关文章:

c# - 如何在 ASP.NET Core 中测试自定义操作过滤器?

c++ - 我如何使用谷歌测试框架测试 void 方法

ruby - 如何在 Ruby 中设置数据结构以进行高效搜索?

java - 尝试创建一种在 Android Java 中格式化十六进制字符串的方法

c# - Bouncy CaSTLe 不在 C# 中从 Java 解密 DoFinal

c# - C# IL 在调用 C++ DLL 时如何通过 Ref 取回参数

c# - 使用 StackExchange.Redis 客户端更新 Redis 缓存中的字典对象

c++ - 写入文件时遇到问题(ofstream)

c++ - 我如何知道 Boost 的哪些部分已被弃用?

javascript - 将数组中的值分配给键