我有一个3维动态的动态数组,例如。
customArray : array of array of array of double
在程序中,我分别设置每个尺寸的长度(不是矩形阵列),并在需要时更改它。
我想知道数组是否存储在一个紧凑的内存部分中,以便像writebuffer(customArray,sizeof(customArray))
一样将其保存在流中
然后,将其再次加载到相同的动态数组中
readbuffer(customArray, savedSize);
这可能吗?
答案 0 :(得分:4)
这实际上不是一个多维数组。这就是所谓的jagged array。最内层的维度是连续的,但外部维度是指针数组。
因此元素不会连续存储。如果您希望以连续的方式将它们写入文件,则需要通过循环遍历每个维度来安排它。
在伪代码中:
for i
for j
for k
write(arr[i,j,k]);
由于最里面的维度是连续的,因此可以写成:
for i
for j
write(arr[i,j]);
锯齿状数组可以包含不同长度的成员数组,但我认为你的数组的成员长度都相同。