C ++中vector的insert和emplace有什么区别

时间:2013-03-27 12:52:41

标签: c++ vector

除了使用emplace进行单次插入和使用向量中的插入进行多次插入 他们的实施还有其他不同之处吗?

在两种情况下,插入任何元素都会移动所有其他元素。

2 个答案:

答案 0 :(得分:9)

通过调用复制构造函数或移动构造函数,将

std::vector::insert 副本元素移动到容器中。
同时,
std::vector::emplace元素就地构建,即不执行复制或移动操作。

后来是从C ++ 11开始引入的,如果复制你的类是一项非常重要的操作,那么它的使用是可取的。

答案 1 :(得分:0)

主要区别在于insert将一个类型与容器类型相同的对象和复制该参数引入容器。 emplace从这些参数中获取或多或少的任意参数列表和构造容器中的对象。