emplace_back()是c++11的新特性。
区别在于:
push_back()方法要调用构造函数和复制构造函数,这也就代表着要先构造一个临时对象,然后把临时的copy构造函数拷贝或者移动到容器最后面。
而emplace_back()在实现时,则是直接在容器的尾部创建这个元素,省去了拷贝或移动元素的过程。
emplace_back()
函数在原理上⽐
push_back()
有了⼀定的改进,包括在内存优化⽅⾯和运⾏效率⽅⾯。内存优化主要体现在使⽤了就地构造(直接在容器内构造对象,不⽤拷⻉⼀个复制品再使⽤)
+
强制类型转换
的⽅法来 实现,在运⾏效率⽅⾯,由于省去了拷⻉构造过程
结论:在C++11情况下,果断用emplace_back代替push_back