存储多维动态数组

时间:2016-03-24 21:41:48

标签: arrays delphi multidimensional-array dynamic-arrays

我有一个3维动态的动态数组,例如。

customArray : array of array of array of double

在程序中,我分别设置每个尺寸的长度(不是矩形阵列),并在需要时更改它。

我想知道数组是否存储在一个紧凑的内存部分中,以便像writebuffer(customArray,sizeof(customArray))一样将其保存在流中 然后,将其再次加载到相同的动态数组中 readbuffer(customArray, savedSize);

这可能吗?

1 个答案:

答案 0 :(得分:4)

这实际上不是一个多维数组。这就是所谓的jagged array。最内层的维度是连续的,但外部维度是指针数组。

因此元素不会连续存储。如果您希望以连续的方式将它们写入文件,则需要通过循环遍历每个维度来安排它。

在伪代码中:

for i
  for j
    for k
      write(arr[i,j,k]);

由于最里面的维度是连续的,因此可以写成:

for i
  for j
    write(arr[i,j]);

锯齿状数组可以包含不同长度的成员数组,但我认为你的数组的成员长度都相同。