C++ STL 之stack
目录
1.stack的定义
2.stack的常用函数
3.stack的常见用途
4.几点说明
1.stack的定义
stack翻译为栈,是STL中实现的一个先进后出,后进先出的容器。它只有一个出口,只能操作最顶端元素。
1.1头文件
要使用stack,应先添加头文件#include<stack>,并在头文件下面加上“using namespace std;”然后就可以使用了。
#include <stack>
1.2定义形式
stack<typename> name;
//typename可以是任意基本数据类型或容器stack<int>s;
stack<string>s;
stack<node>s; //node是结构体类型
2.stack的常用函数
代码 | 含义 |
push( ) |
向栈压入一个元素 a(s.push(a); ) |
pop( ) |
移除栈顶元素(s.pop(); ) |
top( ) | 返回栈顶元素值 (s.top() ) |
empty( ) |
返回bool型,表示栈内是否为空 (s.empty() ) [true为空,false为非空 ] |
size( ) |
返回栈内元素个数 (s.size() ) |
示例如下:
#include <iostream>
#include <stack>
using namespace std;
int main()
{ stack<int>s;for(int i=1;i<=5;i++){s.push(i);} //push(i)将i压入栈,故此处以此入栈1 2 3 4 5cout<<"Top:"<<s.top()<<endl;cout<<"Size:"<<s.size()<<endl;s.pop(); //将栈顶元素出栈,即 5 出栈cout<<"Top:"<<s.top()<<endl; //移除栈顶元素后,现在的栈顶元素是 4if(s.empty()){cout<<"Is empty"<<endl;}else{cout<<"Is not empty"<<endl;}return 0;
}
输出结果:
3.stack的常见用途
stack常用来模拟一些递归,防止程序对栈内存的限制而导致程序出错。一般来说,程序的栈内存空间很小,对有些题目来说,如果用普通的函数来进行递归一旦递归层数过深(不同机器不同,约几千至几万层),则会导致程序运行崩溃如果用栈来模拟递归算法的实现可以避免这一方面的问题(不过这种应用出现较少)。【此处摘抄自《算法笔记》】
4.几点说明
4.1 stack没有迭代器
stack具有先进后出的特点,只能对栈顶元素进行操作。所以stack不提供遍历功能,也不提供迭代器。若想进行遍历,可以将栈中元素取出放在数组中。
主要代码:
stack<int>s;int a[5],t=0;for(int i=1;i<=5;i++){ s.push(i);}while(t<5){a[t++]=s.top();s.pop();}
4.2 stack赋值
stack<int>s={1,2,3}; //error stack不可以用一组数直接初始化
stack<int>s(3); //error stack不可以预先分配空间vector<int>v={1,2,3}; // 栈中元素为1,2,3
stack<int,vector<int>>s1(v);list<int>l={1,2,3};
stack<int,list<int>>s2(l);deque<int>d={1,2,3};
stack<int,deque<int>>s3(d);
stack<int>s4(d); //用deque为stack初始化时deque可省
C++ STL 之stack相关推荐
- 【小白学习C++ 教程】二十二、C++ 中的STL容器stack、queue和map
@Author:Runsen STL 中的栈容器是一种容器适配器.在栈容器中,元素在一端插入并在同一端删除. stack 为了实现堆栈容器,我们需要在我们的程序中包含头文件<stack>. ...
- C++STL的stack容器
C++STL的stack容器 stack 基本概念 stack 常用接口 stack 基本概念 概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口 ...
- C++ STL栈Stack的使用
C++ STL stack 用法 Stack(栈)是一种后进先出的数据结构,也就是LIFO(last in first out) ,最后加入栈的元素将最先被取出来,在栈的同一端进行数据的插入与取出,这 ...
- C++STL之stack栈容器
C++STL之stack栈容器 1. 再谈栈 回顾一下之前所学的栈,栈是一种先进后出的数据结构,而实现方式需要创建多个结构体,通过链式的方式进行实现,这是标准的栈的思路,而在STL中栈可以以更为简单的 ...
- C++ STL:stack和queue
http://blog.csdn.net/wallwind/article/details/6858634 http://blog.csdn.net/chao_xun/article/details/ ...
- 6-5-1:STL之stack和queue——stack和queue的快速入门、常用接口以及适配器的概念
文章目录 一:简单介绍 (1)stack (2)queue 二:stack和queue的应用 三:stack和queue的模拟实现--适配器 一:简单介绍 stack和queue是STL中的两个容器, ...
- C++ STL之stack栈容器
一.STL: 1)标准模版库,提供了通用的模版库和函数.如:向量.链表.队列.栈. 2)核心组建包括:容器(Containers).算法(Algorithms).迭代器(Iterators). 二.S ...
- 【STL】C++ STL之stack详解
返回主目录 stack 1. 介绍 栈为数据结构的一种,是STL中实现的一个先进后出,后进先出的容器. 就像火车进入没有出口的隧道一样,隧道是stack栈容器,火车车厢是入栈元素,火车头先进去,火车尾 ...
- 【ACM】【STL】stack应用
C++ Stacks(堆栈) C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,--也就是说实现了一个先进后出(FILO)的数据结构. 操作 比较和分配堆栈 empty() ...
最新文章
- 安装sql server 2016 always on配置dtc支持时遇到的问题
- Python 多进程/Event 重复使用唤醒
- Python之路【第十七篇】:装饰器
- linux 0755,linux audit审计(7-1)--读懂audit日志
- PHP Linux安装
- Mac硬件温度管理软件TG Pro
- 解决电脑总是“正在识别”,无法获取合法地址
- python json转xml_Python实现XML到JSON的转换并编写,python,xml,转化,为,Json,进行,写入
- x86已安装该产品 剑灵vcredist_vcredist_x86.exe 每次我一安装都出现这个提示,请问这是怎么回事,该怎么解决?谢谢...
- Android性能测试用例
- 假如时光倒流,我要这样学编程
- 生成开端原著小说词云
- 比较两个记事本文件内容的差异
- 更换VS2015——>VS2019
- 夏斌:半年宏观调控思路的建议
- android 传输助手 mac,MacDroid for mac(安卓手机数据传输助手)
- 基于ElementUI 国际化电话组件el-phone-number-input用法
- 苹果在中国的降价策略收到效果 销量回升了
- 2022-2027年中国生物实验室耗材行业市场深度分析及投资战略规划报告
- 手把手教你GitBook使用
热门文章
- Jenkins的kubernetes-plugin使用方法
- 从道通诉大疆一案看美国337调查中的国内实业原则
- Linux-Linux内核-进程调度
- 联合应用开发 JAD
- [paper share]KDD15 - Interpreting Advertiser Intent in Sponsored Search
- APK部署手机上出现闪退现象
- 之江汇空间如何加音乐背景_之江汇互动课堂如何使用?之江汇互动课堂使用方法...
- win10用户账户控制怎么取消或打开
- xAd:南京大学大二学生开发的视频内广告动态植入技术
- 仿百度外卖、美团外卖、淘点点等左右联动ListView菜单展示