2013-02-09 16 views

答えて

84

Emplaceはオブジェクトを作成するのに必要な引数を取りますが、insertはオブジェクトを参照します。

struct Foo 
{ 
    Foo(int n, double x); 
}; 

std::vector<Foo> v; 
v.emplace(someIterator, 42, 3.1416); 
v.insert(someIterator, Foo(42, 3.1416)); 
21

insertオブジェクトをベクトルにコピーします。

emplace構築物これらはベクターの内側にある。

+5

C++ 11では、 'insert'はコピーする必要はなく、移動することもできます。 – juanchopanza

+10

rvalueキャストを使用すると挿入が移動することがありますが、そうでない場合があります。したがって、パフォーマンスを明確にするために可能な限りemplaceを使用するScott Meyerの推奨事項。 – jeremyong

関連する問題