将矢量内容复制到数组中的最快方法?

时间:2012-10-12 20:49:45

标签: c++ vector

  

可能重复:
  How to convert vector to array C++

使用数组时,您可以使用

memcpy( void *destination, const void *source, size_t num );

然而,vector只是为copy方法提供迭代器,使memcpy无用。将矢量内容复制到另一个位置的最快方法是什么?

4 个答案:

答案 0 :(得分:34)

std::copy,放下手。它经过大量优化,可在内部使用最佳可用方法。因此它完全与memcpy相提并论。即使在C风格的数组或内存缓冲区之间进行复制,也没有理由使用memcpy

答案 1 :(得分:11)

您必须在您的环境中使用您的程序自行衡量。任何其他答案都会有太多警告。

当你这样做时,这里有一个方法,你可以比较:

std::copy(source.begin(), source.end(), destination);

答案 2 :(得分:6)

试试这个: -

  std::vector<int> newvector(oldvector);

要复制数组,请尝试: -

  std::copy(source.begin(), source.end(), destination);

答案 3 :(得分:3)

你可以使用带有向量的memcpy - 保证向量在内存中是连续的,所以如果向量不为空,你可以使用&vData[0](其中vData是你的向量)作为你的源指向memcpy

的指针

编辑正如评论中提到的其他答案一样,只有在矢量的value_type可以轻易复制时才有效。