c++ - 具有 4 个维度的 std::vector 的性能

标签 c++ arrays multidimensional-array vector

我正在寻找在运行超过 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/

相关文章:

c++ - Glm 四元数观察函数

c++ - 如何将 GCC 类传递给 MSVC dll?

java - 二维数组 Java 编码查找数组

c++ - 将 VS 32 位项目转换为 64 位项目

c++ - 是否可以在 C++ 中新创建的线程中加入子线程?

javascript - JQuery - 获取关联数组的最小和最大日期

javascript - 对象值的笛卡尔积(到数组)

python - 如何使用Python中的方程填充多维数组

javascript - 将数据存储在数组或对象中哪个更有效?

javascript - 从javascript中的嵌套数组中过滤数组