C++ 空指针

标签 c++ pointers hdf5

我正在使用 HDF5 库从 C++ 中的 HDF5 文件中读取数据,我遇到问题的调用如下:

status = H5Dread(
    hdf5_dataset,
    hdf5_datatype,
    hdf5_dataspace_in_memory,
    hdf5_dataspace_in_file,
    H5P_DEFAULT,
    buf
);

最后一个参数应该是一个空指针,我有一个我想要分配的浮点 vector ,但是当我尝试传递 vector 时 g++ 给我以下错误:

error: cannot convert ‘std::vector<float, std::allocator<float> >’ to ‘void*’ for argument ‘6’ to ‘herr_t H5Dread(hid_t, hid_t, hid_t, hid_t, hid_t, void*)’

有什么方法可以直接写入 vector 而不必分配两次内存?

最佳答案

由于 std::vector 保证数据存储在连续内存中,您可以像这样将 vector 转换为指针:

std::vector<float> myFloats;
void *ptr = static_cast<void*>(&myFloats[0]); // or &myFloats.front()

编辑:如果您在不调用 push_back 的情况下写入它,请确保先调整大小足够的空间!

关于C++ 空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6393178/

相关文章:

c++ - '*' 标记之前的预期主表达式?

C++ 获取虚函数表索引

python - 将 HDF 5 文件读入 Pandas 时,如何避免字符串被读取为字节?

hdf5 - 向 HDF5 文件添加结构 - 相当于 HDF5 的 NetCDF "Conventions"

python - 用 Python 编写 Fortran 无格式文件

c++ - 排序 vector 的交集

c++ - 如何访问可变 lambda 函数参数

c - 练习 16 中带指针的函数 艰难地学习 c

c - 两种数组指针初始化方法的区别

c++ - 在另一个类中初始化指针