66

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

4

2 に答える 2

153

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));
于 2013-02-09T12:44:57.650 に答える
50

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

emplace それらをベクター内に構築します。

于 2013-02-09T12:45:29.067 に答える