C++STL之stack栈容器
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栈容器相关推荐
- C++ STL之stack栈容器
一.STL: 1)标准模版库,提供了通用的模版库和函数.如:向量.链表.队列.栈. 2)核心组建包括:容器(Containers).算法(Algorithms).迭代器(Iterators). 二.S ...
- C++小课堂:STL中的栈容器(stack)
栈很像我们的箱子,我们将衣服这些装进箱子,第一个拿出来的肯定是最顶上的那件衣服,栈也一样. 今天我们就来学习栈容器:stack 头文件:<stack> 之前介绍的vector其实是STL中 ...
- 【STL】C++ STL之stack详解
返回主目录 stack 1. 介绍 栈为数据结构的一种,是STL中实现的一个先进后出,后进先出的容器. 就像火车进入没有出口的隧道一样,隧道是stack栈容器,火车车厢是入栈元素,火车头先进去,火车尾 ...
- c++ stl栈容器stack用法介绍
stack堆栈容器 堆栈是一个线性表,插入和删除只在表的一端进行.这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom).堆栈的元素插入称为入栈,元素的删除称为出栈.由于元素 ...
- 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )
文章目录 queue 队列 stack 栈 priority_queue 优先级队列 priority_queue 优先级队列指定排序方法 priority_queue 优先级队列排序行为 prior ...
- C++STL的stack容器
C++STL的stack容器 stack 基本概念 stack 常用接口 stack 基本概念 概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口 ...
- C++(STL):24 ---序列式容器stack用法
1.stack的定义 要使用stack,应先添加头文件#include <stack>, 并在头文件下面加上 "using namespace std" //定义 st ...
- 【贪玩巴斯】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是一种 ...
- 记一道面试题:STL两个栈实现一个队列。
面试题目 STL两个栈实现一个队列. 要求:只能使用栈的pop(),top()和push(),以及测试栈是否为空 empty()四个操作. 来实现队列的clear(), push(),pop(),ba ...
最新文章
- 拼多多回应开除程序员:严重违反员工行为规范,因此解约!
- 华为手机 android8.0APP更新时出现安装包解析异常的提示及安装闪退(无反应)问题
- android path 详解
- python报错:ModuleNotFoundError: No module named cv2.cv2(bug不能加英文引号)
- 前端开发掌握nginx常用功能之rewrite
- PyQt5树形结构控件QTreeWidget操作
- 萌新向Python数据分析及数据挖掘 第二章 pandas 第二节 Python Language Basics, IPython, and Jupyter Notebooks...
- 「管理数学基础」2.4 泛函分析:有界线性算子与泛函、例题
- 2021 ICPC全国邀请赛(西安)太原理工大学收获3枚奖牌
- css居中显示代码怎么写,div居中代码 DIV水平居中显示CSS代码
- 谷歌ai人工智能叫什么_Google I / O 2017的“ AI First”口号
- 使用Zip命令进行本地提权(类Unix系统)
- Android之音频和视频的提取
- php nts ts 版本区分
- unity查询当前屏幕分辨率
- Polar SC的C语言实现之译码篇
- 算法提高 盾神与积木游戏
- Applilet2 for V850ES/Fx3生成代码
- java代理(静态代理和jdk动态代理以及cglib代理)
- 面对流氓软件,是逃避还是反击?(连载三、未来的流氓软件)
热门文章
- 100天搞定机器学习(100-Days-Of-ML)(一)数据预处理
- 京东商品关联版式,如何设置手机和电脑都显示?
- MySql Order By 多个字段 排序规则
- 支持向量机——SVM算法及例子(代码)
- 小学计算机基础知识题目,小学信息技术基础知识复习题(清华版第三册)
- OpenJudge[计算邮资]之满分代码
- office2016 使用KMS破解无法连接服务器
- mysql 超卖_mysql 解决超卖问题的锁分析
- Ubuntu完全卸载与安装Mysql
- Postgresql 12.2 + PostGIS 3.0.1 安装部署手册