栈堆的emplace和push_STL - emplace 与 push 的区别
(我的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 的区别相关推荐
- 栈堆的emplace和push_C++(STL):19---deque之删除和emplace用法
deque 容器中,无论是添加元素还是删除元素,都只能借助 deque 模板类提供的成员函数.表 1 中罗列的是所有和添加或删除容器内元素相关的 deque 模板类中的成员函数. 表 1 和添加或删除 ...
- 栈堆的emplace和push_C++ stack emplace()用法及代码示例
堆栈是一种具有LIFO(后进先出)类型的容器适配器,其中在一端添加了一个新元素,而(顶部)仅从该端删除了一个元素. stack::emplace() 此函数用于将新元素插入堆栈容器,新元素添加到堆栈顶 ...
- 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- js的栈堆与浅拷贝、深拷贝的理解
一:什么是堆栈? 我们都知道:在计算机领域中,堆栈是两种数据结构,它们只能在一端(称为栈顶(top))对数据项进行插入和删除. 堆:队列优先,先进先出:由操作系统自动分配释放 ,存放函数的参数值, ...
- 命令行 java文本编辑工具 重载 内存区域 栈 堆
一.dir 列出当前目录下的文件以及文件夹 md创建目录 rd删除目录 cd 进入指定目录 cd..返回到上一级目录 : 切换盘符 比如: F: 二.editPlus 编写 ...
- C语言之程序中内存的来源:栈 堆 数据段
程序在运行的时候,其内存的来源主要通过三种方法: 栈 堆 数据段,总体上来讲栈是一般用来存放小内存的局部变量,堆内存和数据段的属性很像,在使用的的时候,如果这个变量是伴随程序一直存在则使用全局变 ...
- 符号配对(C语言利用栈堆)
#include<stdio.h> #include<stdlib.h> #define MaxN 100 typedef enum{false,true} bool; typ ...
- Java #JVM(HotSpot) 运行时数据区 #程序计数器(PC寄存器)#虚拟机栈(栈帧:局部变量表、操作数栈……)#堆……
目录 JVM中线程的说明 程序计数器(PC寄存器) 虚拟机栈 · 栈帧 ·· 局部变量表 ·· 操作数栈 ·· 动态链接 ·· 方法返回地址 ·· 本地方法栈 堆 · 查看堆的大小 · 堆的默认大小 ...
- 栈堆的emplace和push_C++姿势点: push_back和emplace_back
网上最常讲的:C++ vector::push_back 会先创建临时对象,然后将临时对象拷贝到容器中,最后销毁临时对象:但是 emplace_back 仅会在容器中原地创建一个对象出来,减少临时对象 ...
最新文章
- 统一同一物理主机上VMware虚拟出的不同操作系统如何通信
- 霸榜18年,作者连续20年获得微软MVP,这本SQL书凭什么成为畅销经典
- docker mysql日志写入本地_Docker Compose搭建MySQL主从复制集群
- YJX_rxjh_10_2.5.2
- 【图像分类】 基于Pytorch的细粒度图像分类实战
- vue 设置代理报错;occurred while trying to proxy request xxx
- C# Aspose.Word 操作word文档(利用模板)
- PIC18F452之1602自定义字符
- Exynos4412 文件系统制作(三)—— 文件系统移植
- Facebook 的大牛组长什么样?
- 关于VM虚拟机与主机不能互PING的一种可能的原因
- 云开发打工人必备上班摸鱼划水微信小程序源码
- WEB前端助手FeHelper|前端人员的神器
- MPEG-2 TS学习(一)MPEG-2 TS格式解析
- 5个促进 OKR 成功的文化准则
- cc2530dma控制器功能_dma控制器是什么_dma控制器工作方式
- JAVA用OpenCV做AI图片处理
- phalcon 自动加载_创建 Phalcon7 项目
- Linux下oracle11Gr2(64位)安装说明
- 【笔记】Polygon mesh processing 读书笔记(1)