当前位置: 首页 > news >正文

vector中push_back和emplace_back的区别

push_back

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

emplace_back

在容器尾部添加一个元素,这个元素原地构造,不需要触发拷贝构造和转移构造。而且调用形式更加简洁,直接根据参数初始化临时对象的成员。

1、在插入参数时,push_back需要构建临时对象+拷贝+销毁,而emplace只需要直接创建即可。

2、在插入临时对象时,两者没有区别,都要三步走,创建+move(如果有move的话,没有就是拷贝构造)+销毁。

3、插入对象实例,两者没有区别。


http://www.mrgr.cn/news/39961.html

相关文章:

  • 可扩展架构模式
  • 拿下奇怪的前端报错:某些多摄手机拉取部分摄像头视频流会导致应用崩溃
  • xtu oj 六边形
  • N诺计算机考研-错题(DS)
  • 银河麒麟系统镜像安装包下载
  • Node.JS 版本管理工具 Fnm 安装及配置(Windows)
  • 国内ChatGPT镜像网站整理汇总【OpenAI o1/GPT 4o】-2024/10月最新
  • MultipartFile 接口
  • 从一到无穷大 #36 Lindorm 宽表:东西互联,南北互联,AI一体
  • 优选驾考系统小程序的设计
  • 香港科技大学新作:速度场如何在复杂城市场景规划中大显身手
  • MySQL那些事(InnoDB架构和存储结构)
  • 怎样才能设计出全面且详细的测试要点?
  • Ollama安装部署CodeGeeX4 - ALL - 9B
  • AI写作赋能数据采集,开启无限可能性
  • Linux系统应用(6)——make与makefile
  • Electrodoc 5.2 专业电工工具集合,支持多种计算器和资料查询!
  • 平安养老险深圳分公司积极开展“金融教育宣传月”活动,展现金融为民新风尚
  • JWT 令牌生成报错
  • 【spring中event】事件简单使用