gpt4 book ai didi

C++ : efficient copy of a list of vectors in a vector

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:04 24 4
gpt4 key购买 nike

我正在寻找将 vector 列表的内容复制到 vector 中的最有效方法。我想尽可能避免内存重新分配。

我的问题如下:我有:

  • a std::vector<int> v包含N个元素

  • vector 列表 std::vector< std::vector<int>* > vlist

  • 我知道 vlist 的 vector 中的元素总数 M <= N(N和M可以很大)

我想将 vlist 的所有元素复制到 v 中(首先是 vlist[0] 的所有元素,然后是 vlist[1] 的所有元素等等...),最后将 v 的大小减小到 M(我的项目不使用 C++2011)。

如何尽可能高效地做到这一点?

非常感谢。

编辑:备注:v 已经填充了 N 个元素,我想用来自其他 vector 的 M (<= N) 个元素替换它们。

最佳答案

我不知道这是否是最有效的方式,但这是一种方式:

std::vector<int> v;
std::vector< std::vector<int>* > vlist;
int j = 0;
for(int i = 0; i < vlist.size(); ++i) {
std::copy(vlist[i]->begin(), vlist[i]->end(), &v[j]);
j += vlist[i]->size();
}
v.resize(j);

如果您真的想要最有效的方法,您可能必须实现几种不同的方法并比较它们的速度。

关于C++ : efficient copy of a list of vectors in a vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10607972/

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