(我的STL相关的博客目录:https://blog..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操作,此时它们是相对应的。

栈堆的emplace和push_STL - emplace 与 push 的区别相关推荐

  1. 栈堆的emplace和push_C++(STL):19---deque之删除和emplace用法

    deque 容器中,无论是添加元素还是删除元素,都只能借助 deque 模板类提供的成员函数.表 1 中罗列的是所有和添加或删除容器内元素相关的 deque 模板类中的成员函数. 表 1 和添加或删除 ...

  2. 栈堆的emplace和push_C++ stack emplace()用法及代码示例

    堆栈是一种具有LIFO(后进先出)类型的容器适配器,其中在一端添加了一个新元素,而(顶部)仅从该端删除了一个元素. stack::emplace() 此函数用于将新元素插入堆栈容器,新元素添加到堆栈顶 ...

  3. 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  4. js的栈堆与浅拷贝、深拷贝的理解

    一:什么是堆栈?   我们都知道:在计算机领域中,堆栈是两种数据结构,它们只能在一端(称为栈顶(top))对数据项进行插入和删除. 堆:队列优先,先进先出:由操作系统自动分配释放 ,存放函数的参数值, ...

  5. 命令行 java文本编辑工具 重载 内存区域 栈 堆

    一.dir  列出当前目录下的文件以及文件夹 md创建目录 rd删除目录 cd 进入指定目录 cd..返回到上一级目录 : 切换盘符             比如: F: 二.editPlus  编写 ...

  6. C语言之程序中内存的来源:栈 堆 数据段

    程序在运行的时候,其内存的来源主要通过三种方法:  栈  堆  数据段,总体上来讲栈是一般用来存放小内存的局部变量,堆内存和数据段的属性很像,在使用的的时候,如果这个变量是伴随程序一直存在则使用全局变 ...

  7. 符号配对(C语言利用栈堆)

    #include<stdio.h> #include<stdlib.h> #define MaxN 100 typedef enum{false,true} bool; typ ...

  8. Java #JVM(HotSpot) 运行时数据区 #程序计数器(PC寄存器)#虚拟机栈(栈帧:局部变量表、操作数栈……)#堆……

    目录 JVM中线程的说明 程序计数器(PC寄存器) 虚拟机栈 · 栈帧 ·· 局部变量表 ·· 操作数栈 ·· 动态链接 ·· 方法返回地址 ·· 本地方法栈 堆 · 查看堆的大小 · 堆的默认大小 ...

  9. 栈堆的emplace和push_C++姿势点: push_back和emplace_back

    网上最常讲的:C++ vector::push_back 会先创建临时对象,然后将临时对象拷贝到容器中,最后销毁临时对象:但是 emplace_back 仅会在容器中原地创建一个对象出来,减少临时对象 ...

最新文章

  1. 统一同一物理主机上VMware虚拟出的不同操作系统如何通信
  2. 霸榜18年,作者连续20年获得微软MVP,这本SQL书凭什么成为畅销经典
  3. docker mysql日志写入本地_Docker Compose搭建MySQL主从复制集群
  4. YJX_rxjh_10_2.5.2
  5. 【图像分类】 基于Pytorch的细粒度图像分类实战
  6. vue 设置代理报错;occurred while trying to proxy request xxx
  7. C# Aspose.Word 操作word文档(利用模板)
  8. PIC18F452之1602自定义字符
  9. Exynos4412 文件系统制作(三)—— 文件系统移植
  10. Facebook 的大牛组长什么样?
  11. 关于VM虚拟机与主机不能互PING的一种可能的原因
  12. 云开发打工人必备上班摸鱼划水微信小程序源码
  13. WEB前端助手FeHelper|前端人员的神器
  14. MPEG-2 TS学习(一)MPEG-2 TS格式解析
  15. 5个促进 OKR 成功的文化准则
  16. cc2530dma控制器功能_dma控制器是什么_dma控制器工作方式
  17. JAVA用OpenCV做AI图片处理
  18. phalcon 自动加载_创建 Phalcon7 项目
  19. Linux下oracle11Gr2(64位)安装说明
  20. 【笔记】Polygon mesh processing 读书笔记(1)

热门文章

  1. LiveGBS流媒体平台GB/T28181功能-大屏展示智能码流支持码流清晰度切换取低码率直播流
  2. android 仿 淘宝淘口令
  3. 产品设计-产品设计五要素
  4. 电脑对人体的伤害:分析、保护
  5. Transactional注解 isolation propagation
  6. 文件存储ExtenalStorage和InternalStorage使用以及区别
  7. ReentrantLock acquire方法源码解析
  8. 【数据结构】八大排序算法
  9. PLS UDE调试器试用
  10. Alibaba Sentinel对接Spring Cloud Gateway关于不显示API管理及请求链路的坑附带解决方案