我正在尝试编写一个需要在 3D 数组中存储和调整数据的 C++ 程序。大小由用户给定,在整个运行过程中不会改变,我不需要对其进行任何复杂的矩阵运算。我只需要对其进行优化以设置和获取给定的 3D 坐标(我对所有成员进行了相当多的迭代,这是一个大数组)。定义该数组的最佳方法是什么? vector 的 vector 的 vector ? vector 数组?具有多 channel 的 CvMat/IplImage?我是否应该将其保留为 3D 或只是将其变成一个非常长的交错 vector 并相应地计算索引?
谢谢!
最佳答案
我会选择你的最后一个选项,一个带有转换索引的大型数组。如果您想做的只是读取和写入已知索引,这可能是最有效的结构,无论是在存储还是速度方面。您也可以将其包装在一个类中并重载 operator ()
以便于访问 3D 坐标,例如。您可以编写 a(1,2,3) = 10;
并且重载运算符可以负责将 3D 坐标转换为线性索引。遍历这样的数组也将非常简单,因为只有一维。
关于c++ - C++中高效的多维数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4810714/