首页 > 其他 > 详细

vector中push_back和emplace_back的区别

时间:2020-07-06 21:20:47      阅读:55      评论:0      收藏:0      [点我收藏+]

1、两者区别

在引入右值引用,转移构造函数,转移复制运算符之前,通常使用push_back()向容器中加入一个右值元素(临时对象)的时候,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数这个临时对象放入容器中。原来的临时变量释放。这样造成的问题是临时变量申请的资源就浪费。

引入右值引用,转移构造函数后,push_back()右值时就会调用构造函数和转移构造函数。在这上面有进一步优化的空间就是使用emplace_back,在容器尾部添加一个元素,这个元素原地构造,不需要触发拷贝构造和转移构造。而且调用形式更加简洁,直接根据参数初始化临时对象的成员。

 

参考:https://blog.csdn.net/MOU_IT/article/details/88757348

vector中push_back和emplace_back的区别

原文:https://www.cnblogs.com/zhibei/p/13257289.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!