16

重複の可能性:
ベクトルを配列C++に変換する方法

アレイを操作するときは、次を使用することができます

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

ただし、ベクトルは単にコピーメソッドのイテレータを提供するだけであり、memcpyは役に立たなくなります。内容をベクトルで別の場所にコピーするための最速の方法は何ですか?

4

4 に答える 4

39

std::copy、 手を下げて。内部で利用可能な最良の方法を使用するように大幅に最適化されています。したがって、これは完全にと同等memcpyです。memcpyCスタイルの配列またはメモリバッファ間でコピーする場合でも、を使用する理由はありません。

于 2012-10-12T20:51:53.257 に答える
13

あなたはあなた自身のために、あなたの環境で、あなたのプログラムでそれを測定しなければならないでしょう。他の答えには、あまりにも多くの警告があります。

あなたがそれをしている間、あなたが比較することができる1つの方法がここにあります:

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 に答える