0

说我有一个像这样的数组:

       double theArray[2][5][3][4];

我不太明白最后一个维度。

 first is [][][][][]

 second is [][][][][]
           [][][][][]

 third would make it 3 dimensional,

第四个会做什么?

4

6 回答 6

6

C++(就像之前的 C)并没有真正的多维数组,所以它们都不是真正的 2、3、4(等)维数组。

相反,C++ 提供的是数组、数组的数组等。有了四组括号,您就有了一个数组数组的数组。

现在,忘记我说过的那些——在 C++ 中使用数组很少是一个好主意,使用数组的数组通常更糟糕。如上所示,伪 4D 数组还要糟糕很多倍。只是不要这样做。

如果需要模仿2D、3D等,数组,使用类。它使生活变得更加简单。

于 2013-04-22T23:45:30.947 回答
4

第四个维度是时间。它与三个空间维度一起形成了时空

于 2013-04-22T23:48:06.867 回答
1
double theArray[2] ==> [][]

double theArray[2][5] ==> [][], [][], [][], [][], [][]

double theArray[2][5][3] ==> [][], [][], [][], [][], [][]
                             [][], [][], [][], [][], [][]
                             [][], [][], [][], [][], [][]

double theArray[2][5][3][4] ==> .............
于 2013-04-22T23:45:53.080 回答
1

在 C 和 C++ 中,二维数组只是数组的数组——不多也不少。

3维数组是数组数组的数组。

你有什么:

double theArray[2][5][3][4];

是一个4维数组,一个数组数组数组。

如果您在考虑空间维度,则数组的任何维度都不一定具有任何物理意义。它们只是元素的有序序列,其中序列本身可能是序列,依此类推。

数组可以具有的维数没有限制(除了编译时和运行时存储空间,也可能是编译器施加的一些任意限制)。

对于二维数组,您可以认为元素以矩形网格布局:

[][][][]
[][][][]
[][][][]

但实际上整个过程是线性的,每一行紧跟在内存中的前一行之后。

[][][][][][][][][][][][]
- row0 -- row1- - row2 -

您还可以构建其他类似于多维数组的数据结构。如果您使用指针、指针数组等,则元素和行可能会在内存中任意分散。但这对于大多数用途来说并不重要。

comp.lang.c FAQ的第 6 节很好地讨论了 C 中数组和指针之间经常令人困惑的关系,其中大部分也适用于 C++。

C++ 提供了其他数据结构,作为标准库的一部分,它们比 C 风格的数组更灵活、更健壮。

于 2013-04-22T23:58:25.147 回答
0

假设我们要使用多维数组来跟踪世界人口。

// Population per country: 
int population[ C ]; 
// the 1st dimension is the country index, C is the number of countries

// Population per country per state: 
int population[ C ][ S ];
// the 2nd dimension is the state index, S is the max number of states per cuntry

// Population per country per state per county: 
int population[ C ][ S ][ N ];
// the 3rd dimension is the county index, N is the max number of county per state

// Population per country per state per county per city: 
int population[ C ][ S ][ N ][ I ];
// the 4th dimension is the city index, I is the max number of city per county

// Population per country per state per county per city per gender

// Population per country per state per county per city per gender per age-group

注意:这只是一个例子,它肯定不是人口建模的最佳方法。

注 2:参见 Jerry Coffin 的回答。

于 2013-04-23T00:02:25.173 回答
0

我想要一个技巧来可视化什么是 4 维数组(数学术语中的 4 维矩阵),您可以将其表示为立方体数组(如果维度不相等,则矩形平行六面体更准确)。

就像一个 3 维数组可以表示为一个矩阵数组

于 2013-04-23T00:27:19.247 回答