gpt4 book ai didi

c++ - 只读取可变长度数组的长度,而不读取 hdf5 中的元素

转载 作者:行者123 更新时间:2023-11-28 06:02:13 25 4
gpt4 key购买 nike

这有可能吗?

我有一个数组包含Nvl HDF5-variable-length-arrays已经写入 hdf5 文件。我可以通过(以下代码片段是用 c++ 编写的,但同样欢迎使用 C 版本的 hdf5 API 回答)

hvl_t vl[Nvl];
dset.read(vl, VarLenType(&PredType:NATIVE_INT));

但是,如果我只想读取每个可变长度对象的长度,即 vl[i].len(对于 i=0Nvl-1), 如果不读取数据 vl[].p 怎么办呢?

最佳答案

是的,即使没有直接的函数调用来获取它,它也可以完成。您必须求助于 C 中经典数组大小宏的等价物:sizeof(x)/sizeof(x[0])

如果您的可变长度数组的类型为 vl_type,那么您可以使用 vl_size = H5Dvlen_get_buf_size(vl_type) 获取其大小(以字节为单位)。然后,您需要将此大小除以元素类型的大小(以字节为单位)。这种类型可以用 elem_type = H5Tget_super(vl_type) 找到,它的大小以字节为单位用 elem_size = H5Tget_size(elem_type)

最后,您得到了可变长度数组的长度:vl_size/elem_size

PS:我在这里使用了 C API,因为文档更好,但它在 C++ 中的工作原理相同。

关于c++ - 只读取可变长度数组的长度,而不读取 hdf5 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33041977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com