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