【C++】emplace_back()和push_back()
为什么引入emplace_back?
避免了内存的拷贝和移动,提升了容器插入元素的性能。
主要区别
调用 push_back 或者 insert 函数的时候,是把 元素类型 的 对象 传递给他们,这些对象被拷贝到容器中. 而调用 emplace_back 时候,则是把相应的 参数 传递给 元素类型的 构造函数,这样emplace_back能通过参数原地(直接在容器中)构造对象,不需要拷贝操作
通俗点讲:emplace_back函数的作用是减少对象拷贝和构造次数,是C++11中的新特性。在使用push_back函数往容器中增加新元素时,要有一个该对象的实例才行,而emplace_back可以不用,它可以直接传入对象的构造函数参数直接进行构造,减少一次拷贝和赋值操作。
例子