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

What is difference between insert and emplace for vector in C++

本文关键字:什么 区别 emplace vector insert c++      更新时间:2023-10-16

除了使用emplace进行单次插入和使用insert in vector进行多次插入外,在执行上还有什么不同吗?

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

std::vector::insert 通过调用复制构造函数或移动构造函数复制元素移动到容器中。同时,
std::vector::emplace中,元素在原地构造,即不执行复制或移动操作。

后者自c++ 11以来引入,如果复制类是一个重要的操作,则需要使用它。

主要区别在于insert接受与容器类型相同的对象,而实参复制到容器中。emplace接受一个或多或少任意的参数列表,根据这些参数在容器中构造对象。