C++STL之stack栈容器

1. 再谈栈

回顾一下之前所学的栈,栈是一种先进后出的数据结构,而实现方式需要创建多个结构体,通过链式的方式进行实现,这是标准的栈的思路,而在STL中栈可以以更为简单的方式实现。

2. 头文件

头文件 #include

3. 初始化

格式为:explicit stack (const container_type& ctnr = container_type());

我们以int类型作为参数为例进行创建,其创建方法与vector无异

标准的栈创建方法是直接创建空栈,由于栈的特殊性质,让他拥有其他容器的参数可以这样创建,这种多参数的方式可能有一些复杂,一般也很少这样使用。

通过标准的方式创建向量数组,然后通过复制构造函数的方式进行创建,其内容就是vector数组的全部内容。

stack<int> s;
stack<int> v(s);

4. 迭代器

栈和队列都属于一种特殊的数据结构,只能通过访问顶层数据并不断剔除数据的方法进行全部访问,因此没有直接的迭代器。

5. 常用接口

我们使用stack s 预先创建了一个栈,命名为s,方便举例

a. 大小size()

返回栈元素的个数

函数原型:size_type size() const;

cout<<s.size()<<endl;   //直接返回栈中元素的个数

b. 返回栈顶元素top()

返回栈顶元素内容

函数原型:

reference& top();

const_reference& top() const;

cout<<s.top()<<endl;     //直接返回输出即可
s.top()+=100;            //也可以直接对栈定元素进行修改操作

c. 入栈push()

往栈顶中插入一个元素。

函数原型: void push (const value_type& val);

d. 出栈pop()

将栈顶元素释放,注意pop()函数是没有返回值的,如果要想访问后删除需要先top再pop使用。

函数原型:void pop();

s.pop();

e. 判空empty()

返回一个bool类型的值,只存在真和假,当栈为空时为真,不为空时为假

函数原型

bool empty() const;

可以利用判空的函数进行元素访问的操作,这里建议先使用初始化函数将栈进行复制,否则遍历之后栈s就为空了。

while(!s.empty()){cout<<s.top()<<endl;s.pop();}

C++STL之stack栈容器相关推荐

  1. C++ STL之stack栈容器

    一.STL: 1)标准模版库,提供了通用的模版库和函数.如:向量.链表.队列.栈. 2)核心组建包括:容器(Containers).算法(Algorithms).迭代器(Iterators). 二.S ...

  2. C++小课堂:STL中的栈容器(stack)

    栈很像我们的箱子,我们将衣服这些装进箱子,第一个拿出来的肯定是最顶上的那件衣服,栈也一样. 今天我们就来学习栈容器:stack 头文件:<stack> 之前介绍的vector其实是STL中 ...

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

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

  4. c++ stl栈容器stack用法介绍

    stack堆栈容器 堆栈是一个线性表,插入和删除只在表的一端进行.这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom).堆栈的元素插入称为入栈,元素的删除称为出栈.由于元素 ...

  5. 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )

    文章目录 queue 队列 stack 栈 priority_queue 优先级队列 priority_queue 优先级队列指定排序方法 priority_queue 优先级队列排序行为 prior ...

  6. C++STL的stack容器

    C++STL的stack容器 stack 基本概念 stack 常用接口 stack 基本概念 概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口 ...

  7. C++(STL):24 ---序列式容器stack用法

    1.stack的定义 要使用stack,应先添加头文件#include <stack>, 并在头文件下面加上 "using namespace std" //定义 st ...

  8. 【贪玩巴斯】C++提高编程,掌握STL中最关键的容器技术~(三){map、set、list、queue、stack 五大容器一篇解决!} //2021-08-25

    //  day_03 //  Created by AchesonD16 贪玩巴斯 on 2021/8/19. 1. stack容器 (栈) 1.1 stack 基本概念 栈 概念: stack是一种 ...

  9. 记一道面试题:STL两个栈实现一个队列。

    面试题目 STL两个栈实现一个队列. 要求:只能使用栈的pop(),top()和push(),以及测试栈是否为空 empty()四个操作. 来实现队列的clear(), push(),pop(),ba ...

最新文章

  1. 拼多多回应开除程序员:严重违反员工行为规范,因此解约!
  2. 华为手机 android8.0APP更新时出现安装包解析异常的提示及安装闪退(无反应)问题
  3. android path 详解
  4. python报错:ModuleNotFoundError: No module named cv2.cv2(bug不能加英文引号)
  5. 前端开发掌握nginx常用功能之rewrite
  6. PyQt5树形结构控件QTreeWidget操作
  7. 萌新向Python数据分析及数据挖掘 第二章 pandas 第二节 Python Language Basics, IPython, and Jupyter Notebooks...
  8. 「管理数学基础」2.4 泛函分析:有界线性算子与泛函、例题
  9. 2021 ICPC全国邀请赛(西安)太原理工大学收获3枚奖牌
  10. css居中显示代码怎么写,div居中代码 DIV水平居中显示CSS代码
  11. 谷歌ai人工智能叫什么_Google I / O 2017的“ AI First”口号
  12. 使用Zip命令进行本地提权(类Unix系统)
  13. Android之音频和视频的提取
  14. php nts ts 版本区分
  15. unity查询当前屏幕分辨率
  16. Polar SC的C语言实现之译码篇
  17. 算法提高 盾神与积木游戏
  18. Applilet2 for V850ES/Fx3生成代码
  19. java代理(静态代理和jdk动态代理以及cglib代理)
  20. 面对流氓软件,是逃避还是反击?(连载三、未来的流氓软件)

热门文章

  1. 100天搞定机器学习(100-Days-Of-ML)(一)数据预处理
  2. 京东商品关联版式,如何设置手机和电脑都显示?
  3. MySql Order By 多个字段 排序规则
  4. 支持向量机——SVM算法及例子(代码)
  5. 小学计算机基础知识题目,小学信息技术基础知识复习题(清华版第三册)
  6. OpenJudge[计算邮资]之满分代码
  7. office2016 使用KMS破解无法连接服务器
  8. mysql 超卖_mysql 解决超卖问题的锁分析
  9. Ubuntu完全卸载与安装Mysql
  10. Postgresql 12.2 + PostGIS 3.0.1 安装部署手册