我想知道两者之间有什么不同。我注意到emplace是c ++ 11的补充。那么为什么要加入?
答案 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
在矢量中构建。