【发布时间】:2012-05-15 20:02:47
【问题描述】:
我正在寻找在向量中复制向量列表内容的最有效方法。我想尽可能避免内存重新分配。
我的问题如下: 我有:
一个包含 N 个元素的
std::vector<int> v向量列表
std::vector< std::vector<int>* > vlist而且我知道 vlist 的向量中元素 M 的总数是
我想将 vlist 的所有元素复制到 v 中(首先是 vlist[0] 的所有元素,然后是 vlist[1] 的所有元素等),最后将 v 的大小减小到 M(我的项目不使用 C++2011)。
如何尽可能高效地做到这一点?
非常感谢。
编辑:备注:v 已经填充了 N 个元素,我想用来自其他向量的 M (
【问题讨论】:
-
如果你想避免内存分配那么你不能真正得到一个副本,你可以得到一个参考。您可以引用一个对象,也可以创建它的副本,可能最直观的选择是在复制时重用内存(这样可以节省内存分配)。由于您的向量包含
ints,因此您将它们放在堆栈上,这样比在堆上分配更快。