存储多维动态数组

Storing multidimensional dynamic array

我有一个 3 维双精度动态数组,例如。

customArray : array of array of array of double

在程序中我分别设置了每个维度的长度(不是矩形数组),需要的时候再改。

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

这可能吗?

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

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

伪代码为:

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

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

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

交错数组可以有不同长度的成员数组,但我假设你的数组有相同长度的成员。