両者の違いは何だろうと思っていました。 emplaceはc ++ 11の追加であることに気付きました。では、なぜ追加するのですか?
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
constructそれらはベクトル内にあります。