【STL】C++标准模板库——stack(堆栈)
01、目录
文章目录
- 01、目录
- 02、C++标准模板库——stack介绍
- 03、stack成员函数表
- 04、stack成员函数详解
- 4.1、 push()
- 4.2、 pop()
- 4.3、 size()
- 4.4、 top()
- 4.5、 empty()
- 05、小结
02、C++标准模板库——stack介绍
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。
C++库以提供“模板”为主。所谓模板,是指不必预先制定类型的函数或类。我们可以借助STL(标准模板库 Standard Template Library, STL)提供的高效算法来管理数据。为应对多种需求,STL为用户提供了多种名为容器(Container)的类,用于管理数据集合。在创建动态数组、表、栈、队列等数据结构时,我们只需要定义对应的容器,然后调用相应成员函数或算法即可。
03、stack成员函数表
函数(Function) | 描述(Description) |
---|---|
size() | 返回栈中元素数目 |
push() | 在栈顶增加元素 |
pop() | 移除栈顶元素 |
top() | 返回栈顶元素 |
empty() | 判断堆栈是否为空,堆栈为空则返回真 |
04、stack成员函数详解
下面的所有操作均可用于堆栈,相等指堆栈有相同的元素并有着相同的顺序。
==<=>=<>!=
4.1、 push()
Syntax:
//void push( const TYPE &val ); 向栈中插入元素
#include <iostream>
#include <stack> //栈容器头文件
using namespace std;void test01()
{stack<int> s;for(int i = 0; i < 10; i++){if(i % 2 == 0){s.push(i); //插入偶数}}
}int main()
{test01();system("pause");return 0;
}
4.2、 pop()
Syntax:
// void pop(); 弹出栈顶元素,弹栈或者叫出栈#include <iostream>
#include <stack> //栈容器头文件
using namespace std;void test01()
{stack<int> s;for(int i = 0; i < 10; i++){if(i % 2 == 0){s.push(i); //插入偶数,入栈}}s.pop(); //出栈,此时栈中只剩下:0,2,4,6
}int main()
{test01();system("pause");return 0;
}
4.3、 size()
Syntax:
size_type size(); //返当前堆栈中的元素数目。如:#include <iostream>
#include <stack> //栈容器头文件
using namespace std;void test01()
{stack<int> s;for(int i = 0; i < 10; i++){if(i % 2 == 0){s.push(i); //插入偶数,入栈}}size_t len = s.size(); //此时len为5s.pop(); //出栈,此时栈中只剩下:0,2,4,6len = s.size(); //此时len为4
}int main()
{test01();system("pause");return 0;
}
4.4、 top()
Syntax:
//TYPE &top(); 返回栈顶元素#include <iostream>
#include <stack> //栈容器头文件
using namespace std;void test01()
{stack<int> s;for(int i = 0; i < 10; i++){if(i % 2 == 0){s.push(i); //插入偶数,入栈}}int tmp = s.top(); //返回栈顶元素,并没有弹出栈,只是得到值cout << "tmp:" << tmp << endl; //返回 8}int main()
{test01();system("pause");return 0;
}
4.5、 empty()
Syntax:
//bool empty(); 判断是否栈中为NULL#include <iostream>
#include <stack> //栈容器头文件
using namespace std;void test01()
{stack<int> s;if(s.empty()) {cout << "第一次:s中为NULL" << endl;}else {cout << "第一次:s中不为NULL" << endl;}for(int i = 0; i < 10; i++){if(i % 2 == 0){s.push(i); //插入偶数,入栈}}if(s.empty()) {cout << "第二次:s中为NULL" << endl;}else {cout << "第二次:s中不为NULL" << endl;}}int main()
{test01();system("pause");return 0;
}
05、小结
关于C++标准模板库中的stack的相关知识点,大概就说这些,下节我们就开始队列。
版权声明:转载请注明出处,谢谢!
【STL】C++标准模板库——stack(堆栈)相关推荐
- c++ stl(标准模板库)
1. 引言 STL(标准模板库),从广义上分为:容器,算法,迭代器,容器和算法之间通过迭代器进行无缝连接. 在 c++ 标准种,STL被组织成以下13个头文件: <algorithm> & ...
- ###STL学习--标准模板库
下面进行STL的学习.希望能了解标准模板库中的常用容器,迭代器,可以自由运用STL以提高编写代码的效率.下面的内容我想以知识点为总结,不再像<Effective C++>那样以章节进行总结 ...
- stl标准模板库_如何在C ++ STL(标准模板库)中使用Pair
stl标准模板库 In this article, we'll take a look at using pair in C++ Standard Template Library (STL). 在本 ...
- CSP-J CSP-S NOIP 算法竞赛中的STL(标准模板库)
P1996 约瑟夫问题 2037:[例5.4]约瑟夫问题 P1996 约瑟夫问题 2037:[例5.4]约瑟夫问题_dllglvzhenfeng的博客-CSDN博客 C++ STL详解超全总结(快速入 ...
- STL(标准模板库)--容器(一)
STL-----容器 1. 序列容器 1.1 array 1.2 vector 1.3 deque 1.4 list 1.5 容器中常见的函数成员 2. 容器适配器 2.1 stack 2.2 que ...
- 信息学奥赛中的STL(标准模板库)--2022.09.30
1.信息学奥赛一本通 第5版 第8章 C++实用技巧与模版库(6节) 第一节 排序算法 第二节 运算符重载 第三节 字符串(string) 第四节 FIFO队列和优先队列 第五节 动态数组 第六 ...
- c++--标准模板库(STL)
要看懂STL相关,必须了解c++模板 目录 STL是什么 c++标准模板库包含三个组件 算法 迭代器 迭代器的种类 示例程序 容器 常用的容器(编程练习) string :字符串容器 vector : ...
- C++ STL标准模板库简介
文章目录 1. 什么是STL? 2. STL的优势 3. STL版本? 4. STL的六大组件 5. 学习建议 6. 为什么需要迭代器? 7. 自己实现迭代器iterator 8. STL中的5种迭代 ...
- C++ STL标准模板库
C++ STL(标准模板库) C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量.链表.队列.栈. ...
最新文章
- PDF文字怎么编辑,PDF文档编辑方法
- html如何让列表呈直线排列,html – 列表分成多列
- 使用LSTM进行莎士比亚风格诗句生成
- 【FPGA】SRIO中的关键问题总结(一)SRIO中的关键数据包格式总结
- PHP中如何给日期加上一个月 加一周 加一天
- Vimdiff---VIM的比较和合并工具
- 最近想读的书想做的事
- git 每次都要输入用户名密码_Git向GitHub提供代码
- ubuntu apache配置负载均衡篇(二)
- Android官方开发文档Training系列课程中文版:构建第一款安卓应用之环境配置
- opencv30-图像矩
- 【公测】智能便捷稳定 新版家园只为给你不一样的体验~
- Cadence Orcad Capture原理图导出PDF图文视频教程
- openlayer判断瓦片全部加载完毕
- 《MySQL性能优化和高可用架构实践》阅读总结
- 无线调试和unable to connect to 192.168.2.245:5555由于目标计算机积极拒绝,无法连接。 (10061)
- 1Tb 硬盘重做系统无法启动修复
- 打开ajax大门的新世界(我真的很喜欢这篇内容!)
- allegro放置器件无法放_allegro 放置元件处无复选框,导致无法放置元件错误。
- MMPV开启账期提示MMPV_DATE_CHECK错误
热门文章
- 报名|金融科技下半场如何掘金?数十位大咖邀您深度探讨
- thinkphp开发app商城项目源码下载(thinkphp)
- 小白看大型网站架构设计方案
- 国产开源版「ChatGPT插件系统」来了!豆瓣、搜索一应俱全,清华、面壁智能等联合发布
- EDI 820 付款委托书或汇款通知
- 58 ESP32 OTA升级(双OTA分区无factory APP)
- 公司官网建站笔记(二):在云服务器部署PHP服务(公网访问首页)
- TypeScript(七)泛型、声明合并、扩展阅读
- 制作自己的Search Suggest 1-拼音切分
- 10 Things I Learned From the jQuery Source