私の理解ではstd::copy
、要素を一度に1つずつコピーします。これは、各要素でコンストラクターをトリガーするために必要なようです。memcpy
しかし、そのようなコンストラクター(PODなど)が存在しない場合は、aの方がはるかに効率的だと思います。
それで、STLは、たとえば、vector<int>
コピーの特殊化を要求/許可しますmemcpy
か?
以下の質問は、私が使用しているコンパイラであるため、GCC/MSVCの両方について回答していただければ幸いです。
- 許可されているが必須ではない場合、上記のコンパイラは実際にそれを実行しますか?
- もしそうなら、これはどのコンテナに対してトリガーされますか?明らかにそれは意味がありません
list
が、どうstring
ですかdeque
? - 繰り返しますが、もしそうなら、どのタイプが含まれているのでこれがトリガーされますか?組み込みタイプのみ、または私自身のPODタイプ(例
struct Point {int x, y;}
)? - そうでない場合は、整数/文字/自分の構造体配列などに使用する
new
//delete
ポインターの周りに自分のラッパーを使用する方が速いでしょうか?memcpy