我希望能够将磁盘(HDF5)中的N维矩阵加载到std::vector
对象中。
我预先知道它们的秩,但不知道形状。例如,其中一个矩阵是4级 std::vector<std::vector<std::vector<std::vector<float>>>> data;
我想使用向量来存储值,因为它们是标准的,并且不像c数组那么难看(主要是因为它们知道它们的长度)。
然而,加载它们的方式是使用一个加载函数,该函数接受void *
,这对于秩为1的向量可以正常工作,我可以调整它们的大小,然后访问它的数据指针(vector.data()
)。 对于更高的秩,vector.data()
只会指向vector
,而不是实际的数据。
最坏的情况是我将所有数据加载到辅助c数组中,然后手动复制它们,但对于大型矩阵,这可能会使速度变慢。
有没有一种方法可以在向量中拥有连续的多维数据,然后获得单个地址?
std::vector<float>
中,并封装它在一个类中以伪造它有多个维度。这样可以调用向量上的data
来获取指向整个矩阵数据的指针(连续的)。否则,您基本上拥有一个float****
,每个*
可能在内存中的任何位置(不连续)。 - NathanOliver