我正在寻找在运行4个索引的数据结构中保存双值的最快方法。
我用std :: vector尝试了以下方式:
vector<vector<vector<vector<double>>>> myValues
我的程序有很多操作,其中mValues的值被读取和更改,我想提高性能。
这个4维矢量结构的速度有多快?是否有更合适的选择?
非常感谢。
答案 0 :(得分:7)
在内部,向量将其数据存储在动态分配的数组中,因此4级向量将具有指向指向数组的指针数组的指针数组,指针数组指向double值数组。
另一种方法是分配4D线性数组(可能通过向量)并手动进行索引计算(arr[i][j][k][l]
索引为l + level4_size * (k + level3_size * (j + level2_size * i))
,如果在内存使用方面肯定更有效,不确定速度,因为它可能取决于实际访问。如果你真的关心速度,你应该在实际环境中对这两种实现进行基准测试。