Вопрос

Я использую библиотеку HDF5 для чтения данных из файла HDF5 на C ++, и у меня возникают проблемы со следующим вызовом:

общий

Последний аргумент должен быть указателем void, и у меня есть вектор чисел с плавающей запятой, который я хочу выделить, однако, когда я пытаюсь передать вектор, g ++ выдает следующую ошибку:

<цитата>

ошибка: не удается преобразовать код ‘std::vector<float, std::allocator<float> >’ в код ‘void*’ для аргумента ‘6’ в ‘herr_t H5Dread(hid_t, hid_t, hid_t, hid_t, hid_t, void*)’

Есть ли способ записать непосредственно в вектор, не выделяя память дважды?

Это было полезно?

Решение

Поскольку std::vector гарантирует, что данные хранятся в непрерывной памяти, вы можете преобразовать вектор в указатель следующим образом:

общий

Изменить: если вы пишете в него без вызова push_back, сначала убедитесь, что вы генерируете достаточно места!

Другие советы

Для данного генерирующего кодового кода вы можете получить указатель на непрерывный буфер генерируемых кодовых кодов следующим образом:

общий

Вы можете преобразовать это в код std::vector<float> и передать его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top