栈很像我们的箱子,我们将衣服这些装进箱子,第一个拿出来的肯定是最顶上的那件衣服,栈也一样。

今天我们就来学习栈容器:stack

头文件:<stack>

之前介绍的vector其实是STL中的向量容器

定义也非常简单,和vector一样:

stack<int> st;

但是加入东西时不是之前vector一样:st.push_back(l);

而是st.push(l);

为什么呢?因为stack是栈,如果底部已经有东西就不能将东西再装入底部(不信你试试)

输出也不是像vector一样直接输出st[1],我们要先输出最顶端(因为底部东西看不到)

st.top();

返回长度也很简单,就是返回数组长度一样:

st.size(); //或者写st.length();

那么我们想输出第二个数据怎么办呢?st.top()只能输出顶端呀?

这个问题问得好,我们需要把顶端数据删除:

st.pop();

这个时候我们就可以输出第二个数据啦~

实战演练:

我展示一个示例代码,大家做一下选择题(投票):

#include <iostream>
#include <stack>
using namespace std;stack<int> st;int main()
{for (int i = 1; i <= 10; i++){int l;cin >> l;st.push(l);}for (int i = 1; i <= 10; i++){if (st.top() % 2 == 0){cout << st.top() << "\n";st.pop()}else{continue;}}return 0;

当我输入8 10 7 5 9 2 4 23 56 77的时候,会按照哪个顺序输出?请选择(题目位于文章底部):

(答案会后续发布)

相信大家已经会基础知识了,今天的课程就到这里了,我们下期再见~

C++小课堂:STL中的栈容器(stack)相关推荐

  1. 深入解析C++ STL中的常用容器

    转载:http://blog.csdn.net/u013443618/article/details/49964299 这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的 ...

  2. STL中的set容器的一点总结

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  3. STL中的栈结构和队列结构

    队列和栈都是线性结构,但他们都是受限的线性表,即他们的操作是线性表操作的子集,利用线性表作为栈和队列类的基类会大大减轻编程工作量,提高代码的重用性 栈结构--------头文件为<stack&g ...

  4. PM小课堂 项目管理中的甘特图妙用

    PM小课堂|项目管理中的甘特图妙用 项目管理与甘特图会碰撞出怎样的火花? 为什么要在项目管理中关注甘特图?  甘特图(Gantt chart)是一种通过活动列表和时间刻度表示出特定项目的顺序与持续时间 ...

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

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

  6. Java - 解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 通常我们定义一个基本数据类型的变量,一个对象的引用, ...

  7. cqueue结构pop_c++ stl栈容器stack的pop(),push()等用法介绍及头文件

    C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,--也就是说实现了一个先进后出(FILO)的数据结构. c++ stl栈stack的头文件为: #include c++ ...

  8. 使用STL中的list容器实现单链表的操作

    #include<iostream> #include<list> #include<algorithm> using namespace std; void Pr ...

  9. 近万字带你了解“c++“STL中的各种容器

    目录 1.array容器 vector 和 array镶嵌使用 4.链表容器(list)是一个库封装好的一个双向链表 5.priority_queue: 优先队列 6.map和multimap 7.s ...

最新文章

  1. Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
  2. swift使用xib绘制UIView
  3. mysql一主两从_MySQL 网络延迟参数设置建议
  4. elasticsearch学习之路---Linux 下安装并启动elasticsearch
  5. 修改mysql字符编码出现Job failed to start解决办法
  6. iOS7 UIKit Dynamics 的初步研究
  7. mysql5.7中root密码忘记后修改密码
  8. 辗转相除法(欧几里得算法)求 最大公约数与最小公倍数+推论与证明。
  9. Java事务管理之JDBC
  10. [转]怎么查看端口占用情况?
  11. java—mediator中介模式
  12. [2018.07.14 T1] B君的第四题
  13. Ace Admin前端框架笔记一概要与布局介绍
  14. JFlash软件解锁GD32MCU
  15. matlab瑞利衰落信道仿真
  16. 服务器系统报ata6,ATA_5.4考试管理系统使用手册[最终版].doc
  17. 工信部,映射,映射端口,热备,磁盘,虚拟磁盘,冗余,磁盘阵列技术,廉价冗余磁盘阵列 ,RAID 0,RAID1 ,RAID 3,RAID 5,RAID 6 名词解释
  18. GitHub是什么?怎么用?Git是什么?怎么用?
  19. php 的单例模式(二)
  20. xml 标签带有符号php,php-如果元素每个记录有相似的标记,则获取正确的xml值

热门文章

  1. 前端项目微金所1 - bootstrap模板,Compatible(兼容),Viewport(视口),条件注释,第三方依赖,MediaQuery媒体查询...
  2. FFmpeg命令行(ffmpeg、ffplay、ffprobe)
  3. Rancher Labs携手东网发布“容器+虚拟化”双引擎超融合平台HOR
  4. 又一次移植最新lvgl8到esp32的踩坑记录
  5. 局域网socket传输视频流
  6. 2005年全国信息学分区联赛模拟赛 猫猫的小鱼 题解
  7. Windows和Mac常用网络测试命令
  8. Jieba分词词性标注以及词性说明
  9. 迅雷2014C++研发笔试卷C解题分析
  10. CAD二次开发——通过Ribbon界面来运行程序