这个问题已经在这里有一个答案:
- 的push_back VS emplace_back 6个回答
- C ++的std ::矢量布设VS插入[重复] 2个答案
除了单一插入使用布设和载体使用插入多个插入,有没有在执行任何其他区别吗?
由于在两种情况下插入的任何元件会转移所有其他元素。
这个问题已经在这里有一个答案:
除了单一插入使用布设和载体使用插入多个插入,有没有在执行任何其他区别吗?
由于在两种情况下插入的任何元件会转移所有其他元素。
std::vector::insert
拷贝或通过调用复制构造或移动构造移动元件进入容器。
而,
在std::vector::emplace
元件就地构建 ,即没有拷贝或操作被执行移动。
因为C ++ 11的后面介绍其用法是可取的,如果你复制类是一个不平凡的操作。
的主要区别在于, insert
接受一个对象,其类型是一样的容器类型和拷贝该参数到容器中。 emplace
采取更多或更少的任意参数列表以及在由这些参数容器构造的对象。