繁体   English   中英

n维c ++数组。 怎么可能?

[英]n-dimensional c++ array. How`s that possible?

当GCC允许我这样做时,我感到困惑:

int t[10][10][10][10][10];

我意识到int i[N][N]NxN矩阵,其中前N表示行,第二N表示列。 此外, int i[N][N][N]的第三个N意味着深度,给出了一个三维数组。

我不明白int i[N][N][N][N]及以后是什么意思。

第四个维度是时间,但这不适用于此。

那么,这是否意味着当我到达第三个时,我可以让逻辑消失?

我发现库类比对于可视化多维数组非常有用:

  • 8维数组是一个库
  • 7维数组是库中的地板
  • 六维阵列是图书馆地板上的一个房间
  • 五维阵列是图书馆地板上的一个书架
  • 四维阵列是图书馆地板上的书房中的书架
  • 三维阵列是在图书馆的地板上的书房中的书架上的书
  • 二维数组是图书馆地板上的书房中书架上的书中的页面
  • 一维数组是图书馆中地板上的书房中书架上的书中的一行
  • 0维数组是图书馆地板上的书架中书架上书架上的一行中的字符

在数学世界中,维度的数量无关紧要。 它最终会达到一个人们无法再将其可视化的程度。

尺寸正是您想要制作的尺寸。 例如,深度和时间只有在处理这些概念时才有意义。

它不一定是空间和时间 实际上,C ++标准称它们为范围

假设您有十种不同的奶酪,并且您希望评估某人喜欢某种特定顺序的可能性。 你可以将它存储在你的int t[10][10][10][10][10]; ,具有范围意义,分别为:最喜欢的奶酪,第二喜欢的奶酪,第三喜欢的奶酪,第四喜欢的奶酪,第五喜欢的奶酪,以及最不喜欢的奶酪。 有人喜欢5-4-6-3-2-1的奶酪的可能性表示为t[5][4][6][3][2][1]

关键是,语言不会将区域语义附加到范围。 这取决于你这样做。

N维数组不仅仅是一个C ++的东西。 它似乎遍及数学,物理,各种其他科学等。

这是一个例子:假设你想按位置(x,y,z),时间和“哪个用户生成数据”来索引数据。 对于在x1,y1,z1,time1和user1生成的数据点,您将其保存在dataArray[x1][y1][z1][time1][user1] = myNewData

在编程中,除非您直接尝试表示世界,否则不要考虑传统几何的多维数组。 最好将每个连续的“维度”视为包含数组的另一个数组。 有几种用例可能出现这种情况。 但是,如果你使用三个以上的维度我不会再把它想象为数组甚至是“数组数组”,我更喜欢树,它们更接近你如何编程需要超过3级深度的东西。

一个例子是树,你有一个根节点,它有节点也有节点。 如果你想对某些东西进行排序,树是一个很好的工具。 假设你想要排序一堆随机出现的数字。 您将创建根目录中的第一个数字。 如果第一个数字是5,而下一个数字是7,那么你将7放到根节点5的“右边”。如果你得到3然后是4,你可以将3插入到5的“左”,然后是3的“右”。如果你按顺序遍历这棵树(总是向左走树,只有在没有新节点然后向右走的时候再回来),你将得到一个排序列表:3,4,5,7。

       5
    /    \
   3      7
     \
      4

在这里,您可以看到树结构。 如果你在C中这样做,你会使用结构,看起来像这样(我使用的是伪代码):

struct Node{
     int val;
     Node left;
     Node right;
}

Binary Trees上有很多材料(我一直在解释),但主要是我希望你摆脱数组的概念“像空间中的维度”,更多的只是一个可以存储元素的数据结构。 有时二叉树或其他数据结构太复杂,并且5维或更多维数组可能更便于存储数据。 我现在还不太想到一个例子,但它们之前已被使用过。

作为物理三维生物,我们无法“可视化”第4,第5,第6(或更高)物理尺寸代表什么。

第四维将我们的感知扩展到第四方向 ,该方向将与我们自然感知的高度,宽度和深度方向正交。
是的 - 几何变得怪异!!

为了让我们感受到这个想法, 在这个视频中, 卡尔·萨根想象一下,生活在二维世界中的一个完美平坦的2d生物(一个小方块)会遇到一个神秘的3D生物会是什么感觉。
这个3D生物(可疑地类似于苹果)主要存在于这个神秘的第三维度中,小方块不能“看到”。 它只能感知苹果与其2d平面世界相交的点,即它的投影 ......

根据今天的标准,视频看起来很老套,但在物理/几何方面仍然是我在那里看到的最好的解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM