c++ - C++中高效的多维数据存储

标签 c++ multidimensional-array

我正在尝试编写一个需要在 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/

相关文章:

c++ - 访问传递给函数的二维数组的段错误

C++11 constexpr 函数的参数传入模板参数

java - 在二维数组的末尾添加新列

Javascript 对象数量

c - 当我将二维数组传递给函数 (tes).t 时,为什么声明 *(*(arr+1)+2) 不起作用

C++ 简单树遍历并将行存储在 vector 的行中。错误 : no matching function for call to 'std::vector<int>::push_back(std::vector<int>&)'

c++ - 将数字与 NaN 进行比较的结果是什么?

c++ - 当定义一个变量为static时,为什么可以多次定义它?

PHP - 如果键存在于多维关联数组中,则返回其位置

c++ - 嵌套std::arrays中的数据是否保证是连续的?