C ++的std ::矢量布设VS插入[重复](C++ std::vector emplace vs

2019-07-19 16:27发布

这个问题已经在这里有一个答案:

  • 的push_back VS emplace_back 6个回答

我想知道什么是两者之间的差异。 我注意到,布设是C ++ 11的补充。 那么,为什么加入?

Answer 1:

布设需要构建到位的对象所必需的参数,而插入件需要一个对象(一个引用)。

struct Foo
{
  Foo(int n, double x);
};

std::vector<Foo> v;
v.emplace(someIterator, 42, 3.1416);
v.insert(someIterator, Foo(42, 3.1416));


Answer 2:

insert拷贝对象到载体中。

emplace 构建它们的矢量的内部。



文章来源: C++ std::vector emplace vs insert [duplicate]
标签: c++ vector stl