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

本文探讨了C++中vector的emplace_back和push_back的区别,强调了当插入对象需要多个参数时,emplace_back的优势在于避免了临时对象的拷贝和销毁,从而提高性能。文章通过三个示例分析了不同情况下两者的性能表现,指出在某些场景下,push_back的性能与emplace_back相当。总结了何时选择emplace_back以获得更高的效率。
摘要由CSDN通过智能技术生成

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

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

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

当vector的类型(

equation?tex=vector%3Ctype%3E )是我们自定义类型(

equation?tex=user%5C_defined%5C+%5C+type ):class或者struct,并且这个类型接受多个构造参数,那么push_back需要传一个对象(

equation?tex=object ),e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值