在c ++中保存和加载大型数组

时间:2012-04-11 20:35:14

标签: c++ arrays file optimization

我需要将一个大的3D整数数组保存到一个文件中,然后在C ++中再次加载它。 它是256 * 256 * 256 = 16777216个整数。

保存此设置并再次加载的最佳方法是什么?我最感兴趣的是快速加载时间。

2 个答案:

答案 0 :(得分:8)

如果数组是在连续的内存中分配的(即:你没有单独分配每个维度) - 你可以将整个内存块转储到文件中。它花费尽可能多,但这将是最小的开销(即:在整个数据块上调用二进制写入)。

如果您在一个系统上保存并在另一个系统上加载,则可能存在数据表示问题,在这种情况下,您可能希望序列化阵列并将每个值保存在受控制的事物中。

答案 1 :(得分:1)

您可能对Boost.Serialization感兴趣,特别是如果您(1)希望能够轻松将此类数据存储在磁盘上,(2)需要一种连贯的方式来保存更复杂的对象,(3)想要一个可移植的解决方案。