栈堆的emplace和push_C++姿势点: push_back和emplace_back

网上最常讲的:C++ vector::push_back 会先创建临时对象,然后将临时对象拷贝到容器中,最后销毁临时对象;但是 emplace_back 仅会在容器中原地创建一个对象出来,减少临时对象拷贝、销毁的步骤,所以性能更高。

我查阅资料后,觉得这个说法不全面,容易引起误导。所以将自己学到的做个记录,帮助新晋c++程序员消疑。

差异1:如果插入vector的 类型 的 构造函数 接受多个参数,那么push_back只能 接受 该类型的对象(实例),emplace_back 还能 接受 该类型的构造函数的参数

当vector的类型(

)是我们自定义类型(

):class或者struct,并且这个类型接受多个构造参数,那么push_back需要传一个对象(

),emplace_back可以只将构造参数传进去(不仅写法更简洁,而且性能也更高了ÿ

你可能感兴趣的:(栈堆的emplace和push)