16

可能重复:
如何将向量转换为数组 C++

使用数组时,您可以使用

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

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

4

4 回答 4

39

std::copy, 把手放下。它经过大量优化以在内部使用最佳可用方法。因此它与memcpy. 没有理由使用memcpy,即使在 C 样式数组或内存缓冲区之间复制时也是如此。

于 2012-10-12T20:51:53.257 回答
13

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

当您这样做时,您可以比较以下一种方法:

std::copy(source.begin(), source.end(), destination);
于 2012-10-12T20:52:25.997 回答
7

试试这个:-

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

要在数组中复制,请尝试以下操作:-

  std::copy(source.begin(), source.end(), destination);
于 2012-10-12T20:53:03.190 回答
3

您可以将 memcpy 与向量一起使用 - 保证向量在内存中是连续的,因此只要向量不为空,您就可以使用&vData[0]vData向量在哪里)作为指向的源指针memcpy

编辑正如对其他答案的评论所述,这仅在向量的 value_type 可轻松复制时才有效。

于 2012-10-12T20:52:03.960 回答