【发布时间】:2013-01-25 03:28:59
【问题描述】:
我想知道两者之间有什么区别。我注意到 emplace 是 c++11 添加的。那为什么要加呢?
【问题讨论】:
我想知道两者之间有什么区别。我注意到 emplace 是 c++11 添加的。那为什么要加呢?
【问题讨论】:
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));
【讨论】:
insert 将对象复制到向量中。
emplace在向量内部构造它们。
【讨论】:
insert不必复制,也可以移动。