(我的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 的区别相关推荐

  1. 栈堆的emplace和push_STL - emplace 与 push 的区别

    (我的STL相关的博客目录:https://blog..net/Kprogram/article/details/90408011) 这里用stack来进行举例操作 第一点,push 的操作可以直接用 ...

  2. 和push的区别_还没有理解let 和 const的用法和区别吗,几百字让你立马搞懂

    本文主要讲解ES6中变量的相关操作,变量的命名, 讲解 var. let . const 三者的区别 正文 ES6中的 let 和 const 都是用来声明变量的, 他们与 var 有所区别 let ...

  3. 和push的区别_RocketMQ的消息订阅push和pull的区别

    RocketMQ消息订阅有两种模式: 一种是Push模式,即MQServer主动向消费端推送: 另外一种是Pull模式,即消费端在需要时,主动到MQServer拉取. 但在具体实现时,Push和Pul ...

  4. Vue中this.$router.replace和this.$router.push的区别

    this.$router.push 跳转到指定URL,向history栈添加一个新的纪录,点击后退会返回至上一个页面. 声明式:< router-link :to = "-" ...

  5. git pull 与 git push 的区别

    git push与git pull是一对推送/拉取分支的git命令. git push 使用本地的对应分支来更新对应的远程分支 $ git push <远程主机名> <本地分支名&g ...

  6. this.$router.go()和this.$router.push()的区别

    this.router.go()和this.router.go()和this.$router.replace的差别 this.$router.go(val) 介绍: 在history记录中前进或者后退 ...

  7. RabbitMQ pull与push的区别

    结论: 1.rabbitMQ更适合push模式,订阅端自己设置一个channel做消息缓存,慢慢消费 2.basic.consume在消费端设置 3.channel.basicGet pul模式会订阅 ...

  8. 【Javascript】shift、unshift、pop、push的区别

    shift() 定义:shitft方法用于把数组的第一个元素从其中删除,并返回第一个元素的值. 说明:如果数组是空的,那么shift方法将不进行任何操作,返回undefined值,该方法会修改原数组. ...

  9. 【C++】 STL库的stack容器

    STL库的stack容器 1.构造函数 2.增 2.1 push() 2.2 emplace() 两者区别 3.删 pop() 4.改 4.1 swap()交换 5.查 top() 6.判空 empt ...

最新文章

  1. 开源的Blink和Spark3.0,谁将称霸大数据领域?
  2. 为什么绩效管理如此重要?有哪些数字化绩效管理工具?
  3. WebMessenger完善后将作为一个开源项目
  4. junit4 assert类中的assert方法总结
  5. MySQL用户管理、常用SQL语句、MySQL数据库备份恢复
  6. 自定义分页模板(银角大王版)
  7. Null和Undefined类型
  8. 揭秘赚钱的技巧,学会让钱自己进来
  9. 计算机组成原理——Cache与主存的地址映射
  10. labview圆环里实物动画图形_有趣的图形教案
  11. 雷林鹏分享:Laravel 安装
  12. 读取nacos_使用nacos配置多环境切换
  13. 手持式自动锁螺丝机怎么操作使用
  14. 计算机中URL是指什么 ?
  15. java分词器加词库_Elasticsearch配置IK分词器的远程词库
  16. java项目大概多少张表,要把数据插入到多张表?该如何处理
  17. 【课程】03 Richards方程数值解
  18. ERP的灵魂是管理思想
  19. 强迫症的 LaTeX 学习笔记
  20. python代码书写_如何优雅的书写Python代码, python使用小技巧

热门文章

  1. jedispool 为redis保驾护航
  2. 在安卓手机上安装Ubuntu详细教程(无需root)
  3. C语言网:神奇的fans
  4. 隆重推荐:唐·玄武门
  5. 几个常用的js 函数汇总大全
  6. CDS 获取系统日期时间
  7. SCSS 使用@each 方法循环遍历数组颜色并赋值
  8. 16 最小二乘法 - 数据分析的瑞士军刀
  9. 树莓派用Python+OpenCV做人脸识别
  10. 16.控制转移指令(条件跳转指令、比较条件跳转指令、多条件分支跳转指令、无条件跳转指令)