哪种方法更快? back_inserter或调整大小

时间:2015-11-03 21:59:38

标签: c++ stl

我想从uint类型的向量v1复制到uint类型的v​​2。

V1有大约750,000个元素。

选项1:

std::copy(v1.begin(), v1.end(), std::back_inserter(v2));

选项2:

v2.resize(v1.size());
std::copy(v1.begin(), v1.end(),v2.begin());

哪个选项会更快?我们不使用c ++ 11。

谢谢!

2 个答案:

答案 0 :(得分:5)

你可能太努力了。 : - )

v2.assign(v1.begin(), v1.end());

将正常工作,并根据需要处理调整大小/保留。

答案 1 :(得分:0)

这是一个非常晚的回复,但几年前我做了一些实验并做了一些测量。它们可以在我的博客Copying memory from C to C++ using std::vector上找到。它还列出了其他一些选项,结果可能对其他人有用。