存储多维动态数组
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]);
交错数组可以有不同长度的成员数组,但我假设你的数组有相同长度的成员。
我有一个 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]);
交错数组可以有不同长度的成员数组,但我假设你的数组有相同长度的成员。