STL - emplace 与 push 的区别
(我的STL相关的博客目录:https://blog.csdn.net/Kprogram/article/details/90408011)
这里用stack来进行举例操作
第一点,push 的操作可以直接用于emplace:
1.直接传入对象(int, double 或者 构造好了的对象)
//假设栈内的数据类型是data
class data {int a;int b;
public:data(int x, int y):a(x), b(y) {}
};
//push
data d(1,2);
S.push(d) 或 S.emplace(d);
2.在传入时候构造对象
S.push(data(1,2));
S.emplce(data(1,2));
3.emplace可以直接传入构造对象需要的元素,然后自己调用其构造函数!
S.emplace(1,2)
意思是,emplace这样接受新对象的时候,自己会调用其构造函数生成对象然后放在容器内(比如这里传入了1,2,它则会自动调用一次data(1,2))
而push,只能让其构造函数构造好了对象之后,再使用复制构造函数!
相当于emplace直接把原料拿进家,造了一个。而push是造好了之后,再复制到自己家里,多了复制这一步。
所以emplace相对于push,使用第三种方法会更节省内存。
注意:emplace_back(type) 对应 push_back(type)
emplace(i, type) 对应于 insert(type, i)
emplace_front(type) 对应于 push_front()
但是!对于stack 和 queue,只有push操作,所以也只有emplace操作,此时它们是相对应的。
STL - emplace 与 push 的区别相关推荐
- 栈堆的emplace和push_STL - emplace 与 push 的区别
(我的STL相关的博客目录:https://blog..net/Kprogram/article/details/90408011) 这里用stack来进行举例操作 第一点,push 的操作可以直接用 ...
- 和push的区别_还没有理解let 和 const的用法和区别吗,几百字让你立马搞懂
本文主要讲解ES6中变量的相关操作,变量的命名, 讲解 var. let . const 三者的区别 正文 ES6中的 let 和 const 都是用来声明变量的, 他们与 var 有所区别 let ...
- 和push的区别_RocketMQ的消息订阅push和pull的区别
RocketMQ消息订阅有两种模式: 一种是Push模式,即MQServer主动向消费端推送: 另外一种是Pull模式,即消费端在需要时,主动到MQServer拉取. 但在具体实现时,Push和Pul ...
- Vue中this.$router.replace和this.$router.push的区别
this.$router.push 跳转到指定URL,向history栈添加一个新的纪录,点击后退会返回至上一个页面. 声明式:< router-link :to = "-" ...
- git pull 与 git push 的区别
git push与git pull是一对推送/拉取分支的git命令. git push 使用本地的对应分支来更新对应的远程分支 $ git push <远程主机名> <本地分支名&g ...
- this.$router.go()和this.$router.push()的区别
this.router.go()和this.router.go()和this.$router.replace的差别 this.$router.go(val) 介绍: 在history记录中前进或者后退 ...
- RabbitMQ pull与push的区别
结论: 1.rabbitMQ更适合push模式,订阅端自己设置一个channel做消息缓存,慢慢消费 2.basic.consume在消费端设置 3.channel.basicGet pul模式会订阅 ...
- 【Javascript】shift、unshift、pop、push的区别
shift() 定义:shitft方法用于把数组的第一个元素从其中删除,并返回第一个元素的值. 说明:如果数组是空的,那么shift方法将不进行任何操作,返回undefined值,该方法会修改原数组. ...
- 【C++】 STL库的stack容器
STL库的stack容器 1.构造函数 2.增 2.1 push() 2.2 emplace() 两者区别 3.删 pop() 4.改 4.1 swap()交换 5.查 top() 6.判空 empt ...
最新文章
- 开源的Blink和Spark3.0,谁将称霸大数据领域?
- 为什么绩效管理如此重要?有哪些数字化绩效管理工具?
- WebMessenger完善后将作为一个开源项目
- junit4 assert类中的assert方法总结
- MySQL用户管理、常用SQL语句、MySQL数据库备份恢复
- 自定义分页模板(银角大王版)
- Null和Undefined类型
- 揭秘赚钱的技巧,学会让钱自己进来
- 计算机组成原理——Cache与主存的地址映射
- labview圆环里实物动画图形_有趣的图形教案
- 雷林鹏分享:Laravel 安装
- 读取nacos_使用nacos配置多环境切换
- 手持式自动锁螺丝机怎么操作使用
- 计算机中URL是指什么 ?
- java分词器加词库_Elasticsearch配置IK分词器的远程词库
- java项目大概多少张表,要把数据插入到多张表?该如何处理
- 【课程】03 Richards方程数值解
- ERP的灵魂是管理思想
- 强迫症的 LaTeX 学习笔记
- python代码书写_如何优雅的书写Python代码, python使用小技巧