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(堆栈)相关推荐

  1. c++ stl(标准模板库)

    1. 引言 STL(标准模板库),从广义上分为:容器,算法,迭代器,容器和算法之间通过迭代器进行无缝连接. 在 c++ 标准种,STL被组织成以下13个头文件: <algorithm> & ...

  2. ###STL学习--标准模板库

    下面进行STL的学习.希望能了解标准模板库中的常用容器,迭代器,可以自由运用STL以提高编写代码的效率.下面的内容我想以知识点为总结,不再像<Effective C++>那样以章节进行总结 ...

  3. stl标准模板库_如何在C ++ STL(标准模板库)中使用Pair

    stl标准模板库 In this article, we'll take a look at using pair in C++ Standard Template Library (STL). 在本 ...

  4. CSP-J CSP-S NOIP 算法竞赛中的STL(标准模板库)

    P1996 约瑟夫问题 2037:[例5.4]约瑟夫问题 P1996 约瑟夫问题 2037:[例5.4]约瑟夫问题_dllglvzhenfeng的博客-CSDN博客 C++ STL详解超全总结(快速入 ...

  5. STL(标准模板库)--容器(一)

    STL-----容器 1. 序列容器 1.1 array 1.2 vector 1.3 deque 1.4 list 1.5 容器中常见的函数成员 2. 容器适配器 2.1 stack 2.2 que ...

  6. 信息学奥赛中的STL(标准模板库)--2022.09.30

    1.信息学奥赛一本通 第5版 第8章 C++实用技巧与模版库(6节) 第一节  排序算法 第二节 运算符重载 第三节  字符串(string) 第四节 FIFO队列和优先队列 第五节  动态数组 第六 ...

  7. c++--标准模板库(STL)

    要看懂STL相关,必须了解c++模板 目录 STL是什么 c++标准模板库包含三个组件 算法 迭代器 迭代器的种类 示例程序 容器 常用的容器(编程练习) string :字符串容器 vector : ...

  8. C++ STL标准模板库简介

    文章目录 1. 什么是STL? 2. STL的优势 3. STL版本? 4. STL的六大组件 5. 学习建议 6. 为什么需要迭代器? 7. 自己实现迭代器iterator 8. STL中的5种迭代 ...

  9. C++ STL标准模板库

    C++ STL(标准模板库) C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量.链表.队列.栈. ...

最新文章

  1. PDF文字怎么编辑,PDF文档编辑方法
  2. html如何让列表呈直线排列,html – 列表分成多列
  3. 使用LSTM进行莎士比亚风格诗句生成
  4. 【FPGA】SRIO中的关键问题总结(一)SRIO中的关键数据包格式总结
  5. PHP中如何给日期加上一个月 加一周 加一天
  6. Vimdiff---VIM的比较和合并工具
  7. 最近想读的书想做的事
  8. git 每次都要输入用户名密码_Git向GitHub提供代码
  9. ubuntu apache配置负载均衡篇(二)
  10. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之环境配置
  11. opencv30-图像矩
  12. 【公测】智能便捷稳定 新版家园只为给你不一样的体验~
  13. Cadence Orcad Capture原理图导出PDF图文视频教程
  14. openlayer判断瓦片全部加载完毕
  15. 《MySQL性能优化和高可用架构实践》阅读总结
  16. 无线调试和unable to connect to 192.168.2.245:5555由于目标计算机积极拒绝,无法连接。 (10061)
  17. 1Tb 硬盘重做系统无法启动修复
  18. 打开ajax大门的新世界(我真的很喜欢这篇内容!)
  19. allegro放置器件无法放_allegro 放置元件处无复选框,导致无法放置元件错误。
  20. MMPV开启账期提示MMPV_DATE_CHECK错误

热门文章

  1. 报名|金融科技下半场如何掘金?数十位大咖邀您深度探讨
  2. thinkphp开发app商城项目源码下载(thinkphp)
  3. 小白看大型网站架构设计方案
  4. 国产开源版「ChatGPT插件系统」来了!豆瓣、搜索一应俱全,清华、面壁智能等联合发布
  5. EDI 820 付款委托书或汇款通知
  6. 58 ESP32 OTA升级(双OTA分区无factory APP)
  7. 公司官网建站笔记(二):在云服务器部署PHP服务(公网访问首页)
  8. TypeScript(七)泛型、声明合并、扩展阅读
  9. 制作自己的Search Suggest 1-拼音切分
  10. 10 Things I Learned From the jQuery Source