21
2つの違いは何ですか?私はemplaceがC++ 11の追加であることに気付きました。だからなぜ追加?C++ std :: vector emplace vs insert
2つの違いは何ですか?私はemplaceがC++ 11の追加であることに気付きました。だからなぜ追加?C++ std :: vector emplace vs insert
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));
insert
オブジェクトをベクトルにコピーします。
emplace
構築物これらはベクターの内側にある。
C++ 11では、 'insert'はコピーする必要はなく、移動することもできます。 – juanchopanza
rvalueキャストを使用すると挿入が移動することがありますが、そうでない場合があります。したがって、パフォーマンスを明確にするために可能な限りemplaceを使用するScott Meyerの推奨事項。 – jeremyong