我有一个应用程序需要将数据存储到hdf文件.
是否可以将数据集存储在实际上是C对象的hdf中?例如,我想将下面的对象a中包含的数据存储到hdf文件(hdf4或hdf5).我可以这样做吗?如果是的话,如果有人可以证明这样做,我将不胜感激.谢谢.
class A(){ public: A(int i,double j):i(i),j(j){}; ~A(); int i; double j; int* ai; vector<int> b; setValues(int i,double j){}; } void main(){ A *a; a = new A(10,10.2); // Store this data to hdf4 or hdf5 // A *a2; // now read in the data stored in hdf file and assign the value here }
解决方法
一种选择是使用复合类型,并将结构成员显式映射到HDF支持的基本类型.
我用方法找到的唯一复杂因素是列表和序列.一种选择是将列表项存储在不同的数据集中,然后引用开始和结束索引.
对于数据不连续或更复杂的情况,一种方法是使用链表类型构造.所以对于以下内容:
class A { int i; vector<int> b; }
这被映射到:
ADataset => { i,b_index }; BDataset => { value,next_index };
‘ADataset’中的记录存储’b_index’. ‘BDataset’中的每条记录都包含该记录的值,然后是可选的next_index. sentinel值可用于’next_index’以知道何时停止.