gpt4 book ai didi

c++ - 使用填充构造函数初始化 vector 的 vector

转载 作者:行者123 更新时间:2023-11-27 22:33:02 25 4
gpt4 key购买 nike

以这种方式初始化一个 vector 的 vector 是否会复制 vector n 次?

const int n, m; 
vector<vector<int>> v(n, vector<int>(m));

初始化是否高效,或者我们可以改进它吗?

最佳答案

Does the initialization of a vector of vectors this way copy the vectors n times?

是的。这将使N拷贝vector<int>(m)所以你会有N + 1分配。

Is the initialization efficient, or can we make it better?

它很不错,但绝不是你能做的最好的。对于原始性能,您想做的是使用单个 vector 并假装它是 2d。看起来像

std::vector<int> v(rows * cols);
v[row_index * cols + col_index] = 5; // same as 2d v[row_index][col_index] = 5;

这会进行一次分配,并且可以保证所有元素都在同一 block 内存中。 2d vector 不能给你这种保证。

为了让生活更轻松,您可以将其封装到一个类中,这样您就可以重载 []运算符使它像一个二维结构。这是通过重载 operator[] 来完成的对于该类并让它返回代理类型,该代理类型包含对 vector 行的引用,并且您重载了 operator[]代理类型返回对 vector 中的 col 的引用。

关于c++ - 使用填充构造函数初始化 vector 的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58527414/

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