具有4维的std :: vector的性能

时间:2017-07-31 13:49:20

标签: c++ arrays multidimensional-array vector

我正在寻找在运行4个索引的数据结构中保存双值的最快方法。

我用std :: vector尝试了以下方式:

vector<vector<vector<vector<double>>>> myValues

我的程序有很多操作,其中mValues的值被读取和更改,我想提高性能。

这个4维矢量结构的速度有多快?是否有更合适的选择?

非常感谢。

1 个答案:

答案 0 :(得分:7)

在内部,向量将其数据存储在动态分配的数组中,因此4级向量将具有指向指向数组的指针数组的指针数组,指针数组指向double值数组。

另一种方法是分配4D线性数组(可能通过向量)并手动进行索引计算(arr[i][j][k][l]索引为l + level4_size * (k + level3_size * (j + level2_size * i)),如果在内存使用方面肯定更有效,不确定速度,因为它可能取决于实际访问。如果你真的关心速度,你应该在实际环境中对这两种实现进行基准测试。