C++ STL 之堆栈(后进先出) stack 详解
文章目录
- Part.I Attention
- Part.II Funciton
- Part.III Code
Part.I Attention
stack<T>
容器适配器的数据是以LIFO
(Last in First Out, 后进先出) 的方式组织的,可以将它想象成放在餐桌上的一摞盘子。- 必须要包含头文件
#include <stack>
Part.II Funciton
和其他序列容器相比,stack
是一类存储机制简单、所提供操作较少的容器。如下图所示,stack 对象仅仅只有7个函数。
下面是 stack
容器可以提供的一套完整操作:
函数名 | 含义 |
---|---|
top()
|
返回一个栈顶元素的引用,类型为 T& 。如果栈为空,返回值未定义。
|
push(const T& obj)
|
可以将对象副本压入栈顶。这是通过调用底层容器的 push_back() 函数完成的。
|
push(T&& obj)
|
以移动对象的方式将对象压入栈顶。这是通过调用底层容器的有右值引用参数的 push_back() 函数完成的。
|
pop()
|
弹出栈顶元素,不返回任何值。 |
size()
|
返回栈中元素的个数。 |
empty()
|
在栈中没有元素的情况下返回 true。 |
emplace()
|
用传入的参数调用构造函数,在栈顶生成对象。类似于push() ,比之少调用一次构造函数
|
swap(stack<T> & other_stack)
|
将当前栈中的元素和参数中的元素交换。参数所包含元素的类型必须和当前栈的相同。对于 stack 对象有一个特例化的全局函数 swap() 可以使用。
|
Part.III Code
完整代码如下:
#include <iostream>
#include <iomanip>
#include <stack>using namespace std;int main()
{int tmp=0;stack<int> stk({0,1,2,3}); // stack<int> stk;stack<int> stk1({0,1,2,3}); cout<<stk.top()<<endl;stk.pop();stk.push(4);stk.emplace(5);cout<<stk.size()<<setw(3)<<stk.top()<<endl;stk.swap(stk1);cout<<stk.size()<<setw(3)<<stk.top()<<endl;getchar();return 0;
}
因为操作比较简单,所以就不进行解释了。下面是输出:
3
5 5
4 3
C++ STL 之堆栈(后进先出) stack 详解相关推荐
- STL 中map的用法详解
STL 中map的用法详解 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可 ...
- C++ STL容器 —— map/multimap 用法详解
C++ STL容器 -- map/multimap 用法详解 写在前面:近期正在学习C++的STL容器,因此在这里做一下日志记录,主要介绍一些容器基本成员函数的用法, 配上实际用例,并不涉及原理.但别 ...
- C++ STL【常用算法】详解
大家好,欢迎来到STL[常用算法]详解模块,本文将对STL中常见但又高频的算法进行一个详细又简单的入门级教学
- Linux 存储 Stack详解
(未完待续,持续更新中) 目录 序言 0 存储设备 0.1 机械盘 0.2 SSD 0.3 NVDIMM 1 VFS 1.0 基础组件 1.0.1 iov_iter 1.0.2 iomap 1.1 i ...
- Vector和Stack详解
一.学习Vector和Stack之前先学习ArrayList ArrayList详解_Allence的博客-CSDN博客一.介绍ArrayList是以什么数据结构实现的ArrayList底层的数据结构 ...
- 【STL】C++ STL之stack详解
返回主目录 stack 1. 介绍 栈为数据结构的一种,是STL中实现的一个先进后出,后进先出的容器. 就像火车进入没有出口的隧道一样,隧道是stack栈容器,火车车厢是入栈元素,火车头先进去,火车尾 ...
- 【c++】22. STL容器的底层实现详解
文章目录 顺序容器 vector(向量容器) deque(双端队列) list 关联容器 set(集合) multiset map(key,value) multimap 顺序容器 vector(向量 ...
- esp32 怎么分配freertos 堆栈大小_详解STM32单片机的堆栈
学习STM32单片机的时候,总是能遇到"堆栈"这个概念.分享本文,希望对你理解堆栈有帮助. 对于了解一点汇编编程的人,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数 ...
- 指令系统——数据寻址(3)——堆栈寻址(详解)
一.总览 二.堆栈寻址 堆栈寻址:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址.堆栈是存储器(或专用寄存器组)中一块特定的按"后进先出(LIFO)" 原则管理的存储区 ...
最新文章
- web标准常见问题整理
- 机器学习(K-means聚类原理以及用法)
- Android 实现扑克牌动画,android – 重叠图像(扑克牌)
- Flask 应用的文件结构
- Jsoup代码解读之五-parser(中)
- mysql服务器的线程数查看方法_MySQL服务器线程数的查看方法详解
- ftp连接oracle服务器,使用SSL加密连接FTP - 架建SSL安全加密的FTP服务器(图)_服务器应用_Linux公社-Linux系统门户网站...
- 深入理解Docker Volume(一)
- MYSQL数据库查询删除创建企业基本知识
- 短视频自媒体成功的秘诀就一个字:真
- 计算机教师招聘试题(汇总集合版),计算机教师招聘试题(汇总集合版)ed.doc
- ad19 导出step 没有pcb_PCB设计导出Gerber基本操作及注意事项(三)
- mysql5.7.23分区表_MySQL5.7.23 VS MySQL5.6.21 分区表性能对比测试
- python 实现dcmtk关联pacs功能 推送下拉影像
- python 文件夹操作_Python之路(第九篇)Python文件操作
- ABP开发框架前后端开发系列---(1)框架的总体介绍
- html怎样让线段显示长度,CAD想要知道线段的长度有什么技巧吗?
- iOS12系统这5个隐藏小技巧!你一定要知道,好用到停不下来!
- 使用jstack排查java应用占用内存过高问题
- 09年河南高考零分作文:兔子,你就是一个傻B