vector中push_back和emplace_back的区别

news2024/11/6 3:16:43
push_back

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

emplace_back

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2180350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java项目实战II基于Java+Spring Boot+MySQL的免税商品优选购物商城(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者 一、前言 随着全球贸易的日益繁荣和消费者需求的多样化,免税商品购物已成为众多旅行者和消费者的热…

【C++】set详解

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

对异步处理的http接口进行性能测试

最近来了新的领导,测试的内容和范畴都变大了,工作内容涉及到APP,线上出现了由于性能引起的bug,不得不进行压测,只能不断的学习了。害,想做一条咸鱼都那么难,找了很多关于接口性能测试的资料&…

模板初阶、auto关键字、范围for和string类的使用

目录 1. 模板初阶 1.1 泛型编程 1.2 函数模板 1.3 类模板 2. auto关键字 3. 范围for的使用(略提) 4. String类部分接口的使用 4.1 String构造函数的使用 4.2 string类begin和end的使用 4.3 string类的rbegin和rend的使用 4.4 string类的size和length的使…

使用 npkill 快速清理本地 node_modules 文件

npkill 可以直接在终端可视化的清除 本地 node_modules 文件夹,方便我们即使清除不常用的依赖。 直接在终端执行 npx npkill 即可开启 node_modules 本地扫描: 然后,我们选择不需要的 node_modules 按下空格即可删除。

sentinel2 L2A处理基线04.00 反射率计算方法

sentinel2 处理基线04.00发布后,L2A地表反射率计算方式也发生了调整;根据新版的数据说明,新版数据增加了负值偏移。因此计算时需要读取数据产品中MTD_MSIL2A.xml的元文件。注意,相比之前的版本,元文件中增加了BOA_ADD_…

django创建一个新的应用

使用 python manage.py startapp myapp 命令可以在你的 Django 项目中创建一个新的应用,名为 myapp。应用是 Django 项目的组成部分,可以帮助你组织代码和功能。执行该命令后,会在你的项目目录下创建一个名为 myapp 的文件夹,包含…

docker部署minio文件服务器

1. 拉取镜像 docker search minio docker pull minio/minio2. 创建映射 mkdir -p /root/docker_app/minio_data mkdir -p /root/docker_app/minio_config3. 执行docker run 自定义用户和秘钥安装: admin/admin123456 docker run -p 9000:9000 -p 9001:9001 -d --name mini…

JavaScript 可视化案例详解

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

大模型驱动的自主智能体全面调研

人工智能咨询培训老师叶梓 转载标明出处 基于LLMs构建的自主智能体,有望实现类似人类的决策能力。图 1 展示了LLMs驱动的自主智能体领域的增长趋势。从2021年1月到2023年8月,不同颜色代表不同类别的智能体。例如,游戏智能体旨在模拟游戏玩家…

MySQL那些事(InnoDB架构和存储结构)

目录 一、序言二、InnoDB架构三、InnoDB内存结构1、Buffer Pool (缓冲池)2、Change Buffer3、Log Buffer 四、InnoDB磁盘结构1、表空间2、Doublewrite Buffer(双写缓冲区)3、Redo Log4、Undo Log 五、结语 一、序言 本节内容为博主根据MySQL 8.0版本官方文档手动翻译过后的最新…

pycharm 配置篇

方法注释 使用方式为,在方法名下方输入三个双(单)引号,回车,自动生成。五种风格的样式如下: def docstrings_func_plain(parm_a, parm_b, parm_c):"""Plain 风格"""def docs…

笔记本电脑如何改ip地址:操作指南与注意事项

在信息时代的浪潮中,网络已成为我们日常生活与工作中不可或缺的一部分。对于笔记本电脑用户而言,IP地址作为设备在网络中的唯一标识,其重要性不言而喻。无论是出于网络安全、网络测试还是特殊网络环境等需求,了解如何修改笔记本电…

NVIDIA Hopper 架构深入

NVIDIA Hopper 架构 GPU 的重要新功能。 文章目录 一、Transformer engine 变压器发动机二、第四代 NVLink 和 NVLink 网络三、第三代 NVSwitch四、New NVLink Switch System 新的 NVLink 开关系统五、PCIe Gen 5 PCIe 第 5 代一、Transformer engine 变压器发动机 Transforme…

java给word设置复选框

poi设置 使用"Wingdings 2" 字体 WordUtil.appendText(paragraph, "\uF052", "Wingdings 2",null); WordUtil.appendText(paragraph, "□", null);选中的复选框: poi导出pdf的时候正常使用aspose-words导出pdf就空了 使用默认字体…

给自己的项目(vue3)中添加 下雪/樱花飘落的背景

查看更佳效果前往我的博客, 可切换 snows_ls BLOGhttp://124.223.41.220/ 0、效果图 樱花飘落 雪花飘落 1、安装 yarn add jparticles / npm i jparticles 2、引入 import { Snow } from jparticles; // 引入粒子效果库 引入雪花效果库 3、使用 在项目中的app.…

onnx TRT 版本对应关系

Onnx 版本和opset 关系 https://github.com/onnx/onnx/blob/main/docs/Versioning.md Onnx runtime 对应 onnx opset 版本 Compatibility | onnxruntime Tensor RT 和onnx 支持版本可以看如下并选择对应分支 https://github.com/onnx/onnx-tensorrt/blob/release/8.4-GA/doc…

企业内训|AI助力智能办公与职场效能提升-青岛某国资平台

9月25日,TsingtaoAI派驻讲师进驻现场,为青岛市某国资平台公司员工交付“AI助力智能办公与职场效能提升”企业内训,整个培训通过AIGC的实际应用案例,帮助学员掌握智能办公的常用工具,提升工作流程优化和决策效率。课程涵…

衡石分析平台系统管理手册-智能运维之软件授权

软件授权​ 在设置->软件授权页面可以看到授权时间、有效期、用户上限、请求码、租户数上限、租户内用户数上限。 请求码是衡石系统用于生成注册码的一段代码,安装衡石系统后,就会自动生成一个请求码,其中包含了本机的指纹信息和当前 Lic…

BFS 解决 FloodFill 算法

BFS 解决 FloodFill 算法 题目一: 图像渲染1. 题⽬链接:2. 题⽬描述:3. 算法思路:4.代码 题目二: 岛屿数量1. 题⽬链接:2. 题⽬描述:3. 算法思路:4.代码 题目三:被围绕的…