C ++ std :: vector emplace vs insert

时间:2013-02-09 12:42:37

标签: c++ vector stl

我想知道两者之间有什么不同。我注意到emplace是c ++ 11的补充。那么为什么要加入?

2 个答案:

答案 0 :(得分:116)

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

答案 1 :(得分:36)

insert将对象复制到向量中。

emplace 在矢量中构建