c++ - 在 hdf 中存储数据集(C++ 类的实例)

标签 c++ hdf5

我有一个应用程序需要将数据存储到 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。标记值可用于“next_index”以了解何时停止。

关于c++ - 在 hdf 中存储数据集(C++ 类的实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8266517/

相关文章:

c++ - 将某些内容发送到标准错误的可能形式

python - 图像恢复以使用 OpenCV 增强细节

python - 将大 csv 转换为 hdf5

linux - 检查库版本 hdf5 linux

c++ - 如何覆盖 QSqlRelationalTableModel?

c++ - 引用结构中的C++内存管理

c++ - 如果任何余数的总和是奇数,则加 11 *除非*加 11 导致

python - 在 HDF5 C++ api 中使用 GZIP 压缩时,是否默认启用自动分块?

python - HDF5 可能的数据损坏或丢失?

android - Android 上的 HDF5 支持