C++小课堂:STL中的栈容器(stack)
栈很像我们的箱子,我们将衣服这些装进箱子,第一个拿出来的肯定是最顶上的那件衣服,栈也一样。
今天我们就来学习栈容器: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)相关推荐
- 深入解析C++ STL中的常用容器
转载:http://blog.csdn.net/u013443618/article/details/49964299 这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的 ...
- STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- STL中的栈结构和队列结构
队列和栈都是线性结构,但他们都是受限的线性表,即他们的操作是线性表操作的子集,利用线性表作为栈和队列类的基类会大大减轻编程工作量,提高代码的重用性 栈结构--------头文件为<stack&g ...
- PM小课堂 项目管理中的甘特图妙用
PM小课堂|项目管理中的甘特图妙用 项目管理与甘特图会碰撞出怎样的火花? 为什么要在项目管理中关注甘特图? 甘特图(Gantt chart)是一种通过活动列表和时间刻度表示出特定项目的顺序与持续时间 ...
- c++ stl栈容器stack用法介绍
stack堆栈容器 堆栈是一个线性表,插入和删除只在表的一端进行.这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom).堆栈的元素插入称为入栈,元素的删除称为出栈.由于元素 ...
- Java - 解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 通常我们定义一个基本数据类型的变量,一个对象的引用, ...
- cqueue结构pop_c++ stl栈容器stack的pop(),push()等用法介绍及头文件
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,--也就是说实现了一个先进后出(FILO)的数据结构. c++ stl栈stack的头文件为: #include c++ ...
- 使用STL中的list容器实现单链表的操作
#include<iostream> #include<list> #include<algorithm> using namespace std; void Pr ...
- 近万字带你了解“c++“STL中的各种容器
目录 1.array容器 vector 和 array镶嵌使用 4.链表容器(list)是一个库封装好的一个双向链表 5.priority_queue: 优先队列 6.map和multimap 7.s ...
最新文章
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
- swift使用xib绘制UIView
- mysql一主两从_MySQL 网络延迟参数设置建议
- elasticsearch学习之路---Linux 下安装并启动elasticsearch
- 修改mysql字符编码出现Job failed to start解决办法
- iOS7 UIKit Dynamics 的初步研究
- mysql5.7中root密码忘记后修改密码
- 辗转相除法(欧几里得算法)求 最大公约数与最小公倍数+推论与证明。
- Java事务管理之JDBC
- [转]怎么查看端口占用情况?
- java—mediator中介模式
- [2018.07.14 T1] B君的第四题
- Ace Admin前端框架笔记一概要与布局介绍
- JFlash软件解锁GD32MCU
- matlab瑞利衰落信道仿真
- 服务器系统报ata6,ATA_5.4考试管理系统使用手册[最终版].doc
- 工信部,映射,映射端口,热备,磁盘,虚拟磁盘,冗余,磁盘阵列技术,廉价冗余磁盘阵列 ,RAID 0,RAID1 ,RAID 3,RAID 5,RAID 6 名词解释
- GitHub是什么?怎么用?Git是什么?怎么用?
- php 的单例模式(二)
- xml 标签带有符号php,php-如果元素每个记录有相似的标记,则获取正确的xml值
热门文章
- 前端项目微金所1 - bootstrap模板,Compatible(兼容),Viewport(视口),条件注释,第三方依赖,MediaQuery媒体查询...
- FFmpeg命令行(ffmpeg、ffplay、ffprobe)
- Rancher Labs携手东网发布“容器+虚拟化”双引擎超融合平台HOR
- 又一次移植最新lvgl8到esp32的踩坑记录
- 局域网socket传输视频流
- 2005年全国信息学分区联赛模拟赛 猫猫的小鱼 题解
- Windows和Mac常用网络测试命令
- Jieba分词词性标注以及词性说明
- 迅雷2014C++研发笔试卷C解题分析
- CAD二次开发——通过Ribbon界面来运行程序