Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
除了使用 emplace 进行单次插入和使用向量中的 insert 进行多次插入外,它们的实现还有其他区别吗?
在这两种情况下,插入任何元素都会移动所有其他元素。
std::vector::insert 通过调用复制构造函数或移动构造函数将元素复制或移动到容器中。 而 Instd::vector::emplace元素是就地构造的,即不执行复制或移动操作。
std::vector::insert
std::vector::emplace
后者是从 C++11 开始引入的,如果复制你的类是一个不平凡的操作,那么它的使用是可取的。
主要区别在于,它insert采用类型与容器类型相同的对象并将该参数复制到容器中。emplace接受一个或多或少的任意参数列表,并根据这些参数在容器中构造一个对象。
insert
emplace