gpt4 book ai didi

c++ - vector vector 的问题是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:57 25 4
gpt4 key购买 nike

我读到一个 vector-of-vector 给定一个固定的 2nd 维度是不好的,但我找不到关于http://www.stackoverflow.com问题的清晰解释.

有人可以解释为什么在单个 vector 上使用 2D 索引比使用 vector-of-vector 更可取吗固定的第 2nd 维度?

此外,我假设 vector-of-vector 是具有变量 2nd 维度?如果有任何相反的证据,我很乐意看到。

最佳答案

对于 std::vector底层数组是从堆中动态分配的。如果你有std::vector<std::vector<double>> ,那么你的外部 vector 看起来像

{v1, v2, v3, v4, ... vn}

看起来每个内部 vector 都将在连续的内存中,而且它们会,但它们的底层数组将不连续。参见 this post 中的内存布局图.换句话说,你不能这么说

&(v1.back()) + 1 == &(v2.front()) // not necessarily true!

相反,如果您将单个 vector 与 striding 结合使用那么您将获得数据局部性,并且它本质上会更多 cache friendly因为您的所有数据都是连续的。

为了完整起见,如果您的矩阵是稀疏的,我将都不使用这些方法,因为有 more elegant and efficient storage schemes比直接的一维或二维阵列。虽然既然你提到你有一个“固定的二维”,我会假设这里不是这种情况。

关于c++ - vector vector 的问题是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38244435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com