2012-04-23 37 views
0

我定义为这样的结构:HDF5:字符串写入,结构和载体(哦,我的)

typedef struct { 
    string mName; 
    vector<int> mParts; 
} AGroup; 

我存储这个结构的情况下,在载体中。我需要将它写入HDF(v5)文件。我想我可以遍历每个实例找到最长MNAME,和最长mParts,创建一个新的,非变长,数组来保存信息,然后该数组写入文件。

那是最好的办法做到这一点?编写一些数据似乎过于复杂。

回答

1

可变长度数组和字符串引入的开销。但它们也是有意义的,因为它们更准确地反映了您的数据结构。您可以使用由可变长度C字符串和可变长度的整数数组组成的复合数据类型。

如果字符串和矢量都有大小接近相同的上限,保存自己一些时间和精力,并使用固定长度的字符串和数组。

这一切都取决于你的数据集的大小。就磁盘空间而言,可变长度元素的开销与固定大小元素中的浪费空间之间存在权衡,如果不尝试就难以估计。如果你的数据集很小,那么做一些更方便的事情。如果是大的,选择你赞成什么最:避免浪费的空间,语义数据的,易于编程等,并根据此标准进行优化。