我有两个 vector :

std::vector<int> v1, v2;

// Filling v1
...

现在我需要将v1复制到v2。有什么理由喜欢
v2 = v1;

std::copy (v1.begin(), v1.end(), v2.begin());
(或相反亦然)?

最佳答案

通常,我强烈希望v2 = v1:

  • 较短,使意图更清晰
  • 如果std::copy的长度不等于v2的长度,那么
  • v1将不起作用(它不会调整其大小,因此它将保留一些旧元素的最佳情况(v2.size() > v1.size()并覆盖程序中其他地方使用的一些随机数据)
  • 如果v1即将过期(并且您使用的是C++ 11),则可以轻松地对其进行修改以对move内容
  • Performancewise分配的速度不太可能比std::copy慢,因为如果实现了性能上的好处,实现者可能会在内部使用std::copy

  • 总之,std::copy的表达能力较差,可能做错了事,甚至没有更快的速度。因此,这里实际上没有任何理由使用它。

    10-06 05:22
    查看更多