是插入件之间差什么和布设在C ++矢量[重复](What is difference between

2019-08-18 01:34发布

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

  • 的push_back VS emplace_back 6个回答
  • C ++的std ::矢量布设VS插入[重复] 2个答案

除了单一插入使用布设和载体使用插入多个插入,有没有在执行任何其他区别吗?

由于在两种情况下插入的任何元件会转移所有其他元素。

Answer 1:

std::vector::insert 拷贝或通过调用复制构造或移动构造移动元件进入容器。
而,
std::vector::emplace元件就地构建 ,即没有拷贝或操作被执行移动。

因为C ++ 11的后面介绍其用法是可取的,如果你复制类是一个不平凡的操作。



Answer 2:

的主要区别在于, insert接受一个对象,其类型是一样的容器类型和拷贝该参数到容器中。 emplace采取更多或更少的任意参数列表以及在由这些参数容器构造的对象。



文章来源: What is difference between insert and emplace for vector in C++ [duplicate]
标签: c++ vector