С ++ недействительный указатель
Вопрос
Я использую библиотеку 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>
и передать его.