Я хочу загрузить N-мерные матрицы с диска (HDF5) в std::vector
объекты.
Я заранее знаю их ранг, но не форму. Например, одна из матриц имеет 4 ранга std::vector<std::vector<std::vector<std::vector<float>>>> data;
Я хочу использовать векторы для хранения значений, потому что они стандартные и не такие уродливые, как c-массивы (в основном потому, что они знают о своей длине).
Однако способ их загрузки заключается в использовании функции загрузки, которая принимает void *
, что прекрасно работает для векторов ранга 1, где я могу просто изменить их размер и затем получить доступ к его указателю данных (vector.data()
). Для более высоких рангов vector.data()
будет просто указывать на vector
с, а не на фактические данные.
В худшем случае я просто загружаю все данные во вспомогательный c-массив, а затем копирую их вручную, но это может значительно замедлить его для больших матриц.
Есть ли способ иметь непрерывные многомерные данные в векторах и затем получить к ним один адрес?