除了使用emplace进行单次插入和使用向量中的插入进行多次插入 他们的实施还有其他不同之处吗?
在两种情况下,插入任何元素都会移动所有其他元素。
答案 0 :(得分:9)
std::vector::insert
副本或将元素移动到容器中。
同时,
在std::vector::emplace
元素就地构建,即不执行复制或移动操作。
后来是从C ++ 11开始引入的,如果复制你的类是一项非常重要的操作,那么它的使用是可取的。
答案 1 :(得分:0)
主要区别在于insert
将一个类型与容器类型相同的对象和复制该参数引入容器。 emplace
从这些参数中获取或多或少的任意参数列表和构造容器中的对象。