当我们谈论数组时,“dimension”是什么意思?

7

当我们谈论数组时,什么是“维度”的意思?

我理解这个概念。但答案是什么呢?

例如,int array[5];我知道,这是一个1D数组。它在索引中有1个下标。但为什么它被称为1维数组?为什么不是1下标数组?


5
“您能改一下说法吗?” ;) 但更具建设性的提问是,您是指“当谈论数组时,我们所说的‘维度’是什么意思?” - Bart
我不认为这个问题缺乏研究努力。但我认为这个问题不适合在这里提问 :( - onemach
@Saqib:我没有给它投反对票,但我怀疑早期投反对票的人认为这个问题不够清晰。后来的编辑使它更加明确了。 - T.J. Crowder
7个回答

12
我们使用“维度”这个术语,因为这是这种事物的通用术语。例如,考虑我们的世界:它有三个明显的维度(宽度、高度、深度)。或者考虑几何学:一个点有零维,一条线有一维,一个平面有两维,一个立方体有三维等等。这个术语适用于数组,因为它确切地描述了与数组相关的同一事物。数组的维度是指它有多少个轴。
一维数组有一个轴,就像一条线:
XXXXXXXX
你可以用一个下标索引到它,例如array[n]
二维数组有两个轴,就像一个平面:
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXXXXXXX
你需要用两个下标来索引它,例如array[x,y]
我不会尝试用ASCII艺术来表示三维或更高维数组(如立方体) :-)

7
“数组的维度”是指为了指定数组中的一个元素,您需要的索引或下标的数量。
维度和下标可能会让人困惑。下标是一个数字(或另一种关联键),而维度是可接受键的范围描述;您需要针对数组每个维度使用一个下标。
例如,在C/C++中,a[10][5]是一个具有两个维度的数组:大小为10和大小为5。您需要两个下标或关键字来寻址其元素。一个下标必须在0到9之间,包括0和9;另一个下标必须在0到4之间。

4
最简单的想法是,数组的维度是跟随类型后面的方括号数量:
int[] 是一个一维数组,int[][] 是一个二维数组,等等。
有时,如果您将数组视为在多个维度中进行图形化,则会很有帮助。一维数组只是一条线,在图表中有1个轴。 2D数组是一个表格,在图表中有两个轴(x,y)。 3D数组是一个立方体,将有3个轴(x,y,z)。

2

维度在数组中的应用方式与笛卡尔坐标系几乎相同。维度表示一个数组可以在多少个轴上增长。例如:

int A[5]  is one dimentional, all elements are access by one index
int A[5][5] is two dimentional. Element are aligned along x and y plane.
int A[5][5][5] is three diminutional, elements are aligned in 3D space.

随着3D技术的发展,视觉变得更加复杂。一个4D数组将会是这样的:
int A[5][5][5][5]

这基本上意味着它可以向四个方向生长。可以将其视为

[5][5][5]  [5][5][5] [5][5][5] [5][5][5] [5][5][5] [5][5][5]

[5][5][5]  [5][5][5] [5][5][5] [5][5][5] [5][5][5] [5][5][5]

[5][5][5]  [5][5][5] [5][5][5] [5][5][5] [5][5][5] [5][5][5]

[5][5][5]  [5][5][5] [5][5][5] [5][5][5] [5][5][5] [5][5][5]

[5][5][5]  [5][5][5] [5][5][5] [5][5][5] [5][5][5] [5][5][5]

这是一个由5个元素组成的3D数组A[5][5][5]。在上面的例子中,它只是A[0][5][5][5]中的第0个元素。


0

我很难理解不同维度的概念以及它们如何展开。

因此,在阅读了Sergey的回复和Microsoft关于数组的文档后,我想出了以下脚本来进行可视化:

Sub Main()
Worksheets("Sheet1").Range("A1", "AK127").Clear  ' Cleaning the array range

For i = 1 To 3
    For j = 1 To 4
        For k = 1 To 5
            Worksheets("Sheet1").Cells(1, ((k - 1) * 5) + 1).Offset((i), (j)).Value = i & "+" & j & "-" & k   ' Assigning numbers 
            Worksheets("Sheet1").Cells(1, ((k - 1) * 5) + 1).Offset((i), (j)).Interior.Color = RGB(255 / j, 155, 150)    ' Assigning colors
        Next k
    Next j
Next i



End Sub

它将输出5个带有颜色方案的3×4阵列(i乘j)块(k1到5)。

我希望这是一个有用的可视化。可以尝试调整数字或i,j,k参数来查看它们如何改变外观。


0

多维数组是允许其成员也是数组的数组。例如:

a = [1, 2, 3]; // 单维数组 b = [7, 8, 9]; // 单维数组

c = [a, b]; // 多维(2维)数组。一个数组的数组。

现在c[0]被分配为数组a作为其元素,c[1]是b。可以像这样访问多维数组的成员:

c[0][0](在这种情况下将是a[0],即1...) c[1][2](在这种情况下将是b[2],即9...)


-2
根据我的理解,数组只是一组具有相似类型对象的列表或元组。我们可以按照以下方式理解维度: 0维: arr[54] 1维: arr([1,2,4]) 2维: arr([[1,2,3],[4,5,6]]) 3维: arr([[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]]) 以此类推...n维。
希望这能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接