文章目录

  • 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 详解相关推荐

  1. STL 中map的用法详解

    STL 中map的用法详解 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可 ...

  2. C++ STL容器 —— map/multimap 用法详解

    C++ STL容器 -- map/multimap 用法详解 写在前面:近期正在学习C++的STL容器,因此在这里做一下日志记录,主要介绍一些容器基本成员函数的用法, 配上实际用例,并不涉及原理.但别 ...

  3. C++ STL【常用算法】详解

    大家好,欢迎来到STL[常用算法]详解模块,本文将对STL中常见但又高频的算法进行一个详细又简单的入门级教学

  4. 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 ...

  5. Vector和Stack详解

    一.学习Vector和Stack之前先学习ArrayList ArrayList详解_Allence的博客-CSDN博客一.介绍ArrayList是以什么数据结构实现的ArrayList底层的数据结构 ...

  6. 【STL】C++ STL之stack详解

    返回主目录 stack 1. 介绍 栈为数据结构的一种,是STL中实现的一个先进后出,后进先出的容器. 就像火车进入没有出口的隧道一样,隧道是stack栈容器,火车车厢是入栈元素,火车头先进去,火车尾 ...

  7. 【c++】22. STL容器的底层实现详解

    文章目录 顺序容器 vector(向量容器) deque(双端队列) list 关联容器 set(集合) multiset map(key,value) multimap 顺序容器 vector(向量 ...

  8. esp32 怎么分配freertos 堆栈大小_详解STM32单片机的堆栈

    学习STM32单片机的时候,总是能遇到"堆栈"这个概念.分享本文,希望对你理解堆栈有帮助. 对于了解一点汇编编程的人,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数 ...

  9. 指令系统——数据寻址(3)——堆栈寻址(详解)

    一.总览 二.堆栈寻址 堆栈寻址:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址.堆栈是存储器(或专用寄存器组)中一块特定的按"后进先出(LIFO)" 原则管理的存储区 ...

最新文章

  1. web标准常见问题整理
  2. 机器学习(K-means聚类原理以及用法)
  3. Android 实现扑克牌动画,android – 重叠图像(扑克牌)
  4. Flask 应用的文件结构
  5. Jsoup代码解读之五-parser(中)
  6. mysql服务器的线程数查看方法_MySQL服务器线程数的查看方法详解
  7. ftp连接oracle服务器,使用SSL加密连接FTP - 架建SSL安全加密的FTP服务器(图)_服务器应用_Linux公社-Linux系统门户网站...
  8. 深入理解Docker Volume(一)
  9. MYSQL数据库查询删除创建企业基本知识
  10. 短视频自媒体成功的秘诀就一个字:真
  11. 计算机教师招聘试题(汇总集合版),计算机教师招聘试题(汇总集合版)ed.doc
  12. ad19 导出step 没有pcb_PCB设计导出Gerber基本操作及注意事项(三)
  13. mysql5.7.23分区表_MySQL5.7.23 VS MySQL5.6.21 分区表性能对比测试
  14. python 实现dcmtk关联pacs功能 推送下拉影像
  15. python 文件夹操作_Python之路(第九篇)Python文件操作
  16. ABP开发框架前后端开发系列---(1)框架的总体介绍
  17. html怎样让线段显示长度,CAD想要知道线段的长度有什么技巧吗?
  18. iOS12系统这5个隐藏小技巧!你一定要知道,好用到停不下来!
  19. 使用jstack排查java应用占用内存过高问题
  20. 09年河南高考零分作文:兔子,你就是一个傻B

热门文章

  1. 全功能的屏幕截图工具 - PicPick
  2. 中国半导体要从点到面,存储器为何是最好下手点?
  3. wc -m命令在统计字符数的时候为什么总是多一个?
  4. SprintBoot:Post请求的参数多一个逗号的解决方法
  5. 步进电机算法s曲线的原理与实现
  6. 大数据技术之HFDS
  7. 安图实验室信息系统--用户许可协议(仅供学习使用)
  8. An adaptive gamma correction for image enhancement 低照度图像自适应gamma矫正
  9. 物联网毕业设计题目大全
  10. 获取大麦网孟鹤堂演出数据并播报和在右下角弹窗提示