web-dev-qa-db-ja.com

C ++ std :: vector emplace vs insert

両者の違いは何だろうと思っていました。 emplaceはc ++ 11の追加であることに気付きました。では、なぜ追加するのですか?

43
Aditya Sihag

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));
121
juanchopanza

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

emplaceconstructそれらはベクトル内にあります。

37
hate-engine