STL学习系列四:Stack容器
Stack简介
- stack是堆栈容器,是一种“先进后出”的容器。
- stack是简单地装饰deque容器而成为另外的一种容器。
- #include <stack>
1.stack对象的默认构造
stack采用模板类实现, stack对象的默认构造形式: stack <T> stkT;
stack <int> stkInt; //一个存放int的stack容器。
stack <float> stkFloat; //一个存放float的stack容器。
stack <string> stkString; //一个存放string的stack容器。
//尖括号内还可以设置指针类型或自定义类型。
2.stack的push()与pop()方法
- stack.push(elem); //往栈头添加元素
- stack.pop(); //从栈头移除第一个元素
- #include<iostream>
- using namespace std;
- #include <stack>
- void objPlay2()
- {
- stack<int> stkInt;
- stkInt.push(); //放进去1
- stkInt.push(); //放进去3
- stkInt.pop(); //弹出来一个元素
- stkInt.push(); //放进去5
- stkInt.push(); //放进去7
- stkInt.push(); //放进去9 此时元素就是1,5,7,9
- stkInt.pop(); //弹出来一个元素
- stkInt.pop();//弹出来一个元素 此时元素就是1,5
- }
- int main()
- {
- objPlay2();
- return ;
- }
3.stack对象的拷贝构造与赋值
- stack(const stack &stk); //拷贝构造函数
- stack& operator=(const stack &stk); //重载等号操作符
- void objPlay3()
- {
- stack<int> stkIntA;
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stack<int> stkIntB(stkIntA); //拷贝构造
- stack<int> stkIntC;
- stkIntC = stkIntA; //赋值
- }
4.stack的数据存取
- stack.top(); //返回最后一个压入栈元素
- void objPlay4()
- {
- stack<int> stkIntA;
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- int iTop = stkIntA.top(); //获取栈顶元素,那就是9,top只是获取栈顶元素,pop是弹出栈顶元素
- stkIntA.top() = ; //
- }
5.stack的大小
- stack.empty(); //判断堆栈是否为空
- stack.size(); //返回堆栈的大小
- void objPlay5()
- {
- stack<int> stkIntA;
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- if (!stkIntA.empty())
- {
- int iSize = stkIntA.size(); //5个元素
- }
- }
下面是以上的所有代码:
- #include<iostream>
- using namespace std;
- #include <stack>
- void objPlay2()
- {
- stack<int> stkInt;
- stkInt.push(); //放进去1
- stkInt.push(); //放进去3
- stkInt.pop(); //弹出来一个元素
- stkInt.push(); //放进去5
- stkInt.push(); //放进去7
- stkInt.push(); //放进去9 此时元素就是1,5,7,9
- stkInt.pop(); //弹出来一个元素
- stkInt.pop();//弹出来一个元素 此时元素就是1,5
- }
- void objPlay3()
- {
- stack<int> stkIntA;
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stack<int> stkIntB(stkIntA); //拷贝构造
- stack<int> stkIntC;
- stkIntC = stkIntA; //赋值
- }
- void objPlay4()
- {
- stack<int> stkIntA;
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- int iTop = stkIntA.top(); //获取栈顶元素,那就是9,top只是获取栈顶元素,pop是弹出栈顶元素
- stkIntA.top() = ; //
- }
- void objPlay5()
- {
- stack<int> stkIntA;
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- stkIntA.push();
- if (!stkIntA.empty())
- {
- int iSize = stkIntA.size(); //5个元素
- }
- }
- int main()
- {
- objPlay2();
- objPlay3();
- objPlay4();
- objPlay5();
- return ;
- }
STL学习系列四:Stack容器的更多相关文章
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
- 标准模板库(STL)学习探究之stack
标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string
- scrapy爬虫学习系列四:portia的学习入门
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- DocX开源WORD操作组件的学习系列四
DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...
- .net reactor 学习系列(四)---.net reactor应用场景
原文:.net reactor 学习系列(四)---.net reactor应用场景 前面已经学习了.net reactor一些基础知识,现在准备学习下实际的应用场景,只是简单的保护和 ...
- STL学习系列之一——标准模板库STL介绍
库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...
- Identity Server4学习系列四之用户名密码获得访问令牌
1.简介 Identity Server4支持用户名密码模式,允许调用客户端使用用户名密码来获得访问Api资源(遵循Auth 2.0协议)的Access Token,MS可能考虑兼容老的系统,实现了这 ...
- 侯捷STL学习(九)--关联式容器(Rb_tree,set,map)
layout: post title: 侯捷STL学习(九) date: 2017-07-21 tag: 侯捷STL --- 第十九节 容器rb_tree Red-Black tree是自平衡二叉搜索 ...
- STL学习系列九:Map和multimap容器
1.map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺 ...
随机推荐
- spring+hibernate--直接修改数据库,再通过hibernate查询数据不变
这个问题已经很多天了,一直没有时间解决,不过还好是自己的项目,没什么影响. 刚好今天没事,想好好解决一下这个问题. hibernate主要配置如下: <property name="h ...
- poj1936_All in All
时间复杂度O(n) #include <stdio.h> #include <string.h> int main(){ int al,bl,i,j; +]; +]; whil ...
- HttpClient特性
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...
- 写给Node.js新手的7个小技巧
一些我更愿意在开始就知道东西 利用 Node.js 开发是一个非常有趣,和令人满足的过程, 他有3万多个模块可以选择使用,并且所有的模块可以非常容易的集成入现有的应用之中. 无论如何,对于一些刚开始使 ...
- Android IOS WebRTC 音视频开发总结(三十)-- ice协议异同
本文主要介绍ICE与SDP交互过程中的一些知识,支持原创,文章来博客园RTC.Blacker,转载请说明出处. 用过libjingle模块的同学都知道连接过程中candidate的获取与连接流程,一边 ...
- Android开发中Ant命令编译和APK签名的一些心得
本文章麦子学院跟小伙伴们详细的分享一下关于Android Ant命令行编译和APK签名详解一些实现方法,这是一个朋友在自己做安卓开发时写的,希望对大家会有所帮助呀. 最近在做Android开发时,需要 ...
- JQuery 的几个有用的技巧
JQuery代码 /* 新窗口打开链接:JQuery filter attr * 禁止鼠标弹出右键菜单:DOM contextmenu * 回到页面顶端:DOM scrollTo * 动态更换Css样 ...
- CentOS6.X安装vsftpd服务
#-----------------CentOS6.X安装VSFTPD服务 #! /bin/sh #1.关闭selinux setenforce 0 sed -i 's/enforcing/disab ...
- AddToDate
AddToDate is a PeopleCode built-in function for manipulating a date in PeopleCode. You can use it to ...
- 转载字典地址:http://blog.csdn.net/aladdinty/article/details/3591789
相关文章: http://www.360doc.com/content/13/1003/23/14070959_318861279.shtml http://www.360doc.com/conten ...