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 回答