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();   //从栈头移除第一个元素
  1. #include<iostream>
  2. using namespace std;
  3. #include <stack>
  4. void objPlay2()
  5. {
  6. stack<int> stkInt;
  7. stkInt.push(); //放进去1
  8. stkInt.push(); //放进去3
  9. stkInt.pop(); //弹出来一个元素
  10. stkInt.push(); //放进去5
  11. stkInt.push(); //放进去7
  12. stkInt.push(); //放进去9 此时元素就是1,5,7,9
  13. stkInt.pop(); //弹出来一个元素
  14. stkInt.pop();//弹出来一个元素 此时元素就是1,5
  15.  
  16. }
  17. int main()
  18. {
  19. objPlay2();
  20. return ;
  21. }

3.stack对象的拷贝构造与赋值

  • stack(const stack &stk);                //拷贝构造函数
  • stack& operator=(const stack &stk);      //重载等号操作符
  1. void objPlay3()
  2. {
  3. stack<int> stkIntA;
  4. stkIntA.push();
  5. stkIntA.push();
  6. stkIntA.push();
  7. stkIntA.push();
  8. stkIntA.push();
  9. stack<int> stkIntB(stkIntA); //拷贝构造
  10. stack<int> stkIntC;
  11. stkIntC = stkIntA; //赋值
  12.  
  13. }

 4.stack的数据存取

  • stack.top();           //返回最后一个压入栈元素
  1. void objPlay4()
  2. {
  3. stack<int> stkIntA;
  4. stkIntA.push();
  5. stkIntA.push();
  6. stkIntA.push();
  7. stkIntA.push();
  8. stkIntA.push();
  9.  
  10. int iTop = stkIntA.top(); //获取栈顶元素,那就是9,top只是获取栈顶元素,pop是弹出栈顶元素
  11. stkIntA.top() = ; //
  12.  
  13. }

5.stack的大小

  • stack.empty();   //判断堆栈是否为空
  • stack.size();             //返回堆栈的大小
  1. void objPlay5()
  2. {
  3. stack<int> stkIntA;
  4. stkIntA.push();
  5. stkIntA.push();
  6. stkIntA.push();
  7. stkIntA.push();
  8. stkIntA.push();
  9.  
  10. if (!stkIntA.empty())
  11. {
  12. int iSize = stkIntA.size(); //5个元素
  13. }
  14.  
  15. }

下面是以上的所有代码:

  1. #include<iostream>
  2. using namespace std;
  3. #include <stack>
  4. void objPlay2()
  5. {
  6. stack<int> stkInt;
  7. stkInt.push(); //放进去1
  8. stkInt.push(); //放进去3
  9. stkInt.pop(); //弹出来一个元素
  10. stkInt.push(); //放进去5
  11. stkInt.push(); //放进去7
  12. stkInt.push(); //放进去9 此时元素就是1,5,7,9
  13. stkInt.pop(); //弹出来一个元素
  14. stkInt.pop();//弹出来一个元素 此时元素就是1,5
  15.  
  16. }
  17. void objPlay3()
  18. {
  19. stack<int> stkIntA;
  20. stkIntA.push();
  21. stkIntA.push();
  22. stkIntA.push();
  23. stkIntA.push();
  24. stkIntA.push();
  25. stack<int> stkIntB(stkIntA); //拷贝构造
  26. stack<int> stkIntC;
  27. stkIntC = stkIntA; //赋值
  28.  
  29. }
  30. void objPlay4()
  31. {
  32. stack<int> stkIntA;
  33. stkIntA.push();
  34. stkIntA.push();
  35. stkIntA.push();
  36. stkIntA.push();
  37. stkIntA.push();
  38.  
  39. int iTop = stkIntA.top(); //获取栈顶元素,那就是9,top只是获取栈顶元素,pop是弹出栈顶元素
  40. stkIntA.top() = ; //
  41.  
  42. }
  43. void objPlay5()
  44. {
  45. stack<int> stkIntA;
  46. stkIntA.push();
  47. stkIntA.push();
  48. stkIntA.push();
  49. stkIntA.push();
  50. stkIntA.push();
  51.  
  52. if (!stkIntA.empty())
  53. {
  54. int iSize = stkIntA.size(); //5个元素
  55. }
  56.  
  57. }
  58. int main()
  59. {
  60. objPlay2();
  61. objPlay3();
  62. objPlay4();
  63. objPlay5();
  64.  
  65. return ;
  66. }

STL学习系列四:Stack容器的更多相关文章

  1. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  2. 标准模板库(STL)学习探究之stack

    标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string

  3. scrapy爬虫学习系列四:portia的学习入门

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  4. DocX开源WORD操作组件的学习系列四

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  5. .net reactor 学习系列(四)---.net reactor应用场景

    原文:.net reactor 学习系列(四)---.net reactor应用场景         前面已经学习了.net reactor一些基础知识,现在准备学习下实际的应用场景,只是简单的保护和 ...

  6. STL学习系列之一——标准模板库STL介绍

    库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...

  7. Identity Server4学习系列四之用户名密码获得访问令牌

    1.简介 Identity Server4支持用户名密码模式,允许调用客户端使用用户名密码来获得访问Api资源(遵循Auth 2.0协议)的Access Token,MS可能考虑兼容老的系统,实现了这 ...

  8. 侯捷STL学习(九)--关联式容器(Rb_tree,set,map)

    layout: post title: 侯捷STL学习(九) date: 2017-07-21 tag: 侯捷STL --- 第十九节 容器rb_tree Red-Black tree是自平衡二叉搜索 ...

  9. STL学习系列九:Map和multimap容器

    1.map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺 ...

随机推荐

  1. spring+hibernate--直接修改数据库,再通过hibernate查询数据不变

    这个问题已经很多天了,一直没有时间解决,不过还好是自己的项目,没什么影响. 刚好今天没事,想好好解决一下这个问题. hibernate主要配置如下: <property name="h ...

  2. poj1936_All in All

    时间复杂度O(n) #include <stdio.h> #include <string.h> int main(){ int al,bl,i,j; +]; +]; whil ...

  3. HttpClient特性

    Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...

  4. 写给Node.js新手的7个小技巧

    一些我更愿意在开始就知道东西 利用 Node.js 开发是一个非常有趣,和令人满足的过程, 他有3万多个模块可以选择使用,并且所有的模块可以非常容易的集成入现有的应用之中. 无论如何,对于一些刚开始使 ...

  5. Android IOS WebRTC 音视频开发总结(三十)-- ice协议异同

    本文主要介绍ICE与SDP交互过程中的一些知识,支持原创,文章来博客园RTC.Blacker,转载请说明出处. 用过libjingle模块的同学都知道连接过程中candidate的获取与连接流程,一边 ...

  6. Android开发中Ant命令编译和APK签名的一些心得

    本文章麦子学院跟小伙伴们详细的分享一下关于Android Ant命令行编译和APK签名详解一些实现方法,这是一个朋友在自己做安卓开发时写的,希望对大家会有所帮助呀. 最近在做Android开发时,需要 ...

  7. JQuery 的几个有用的技巧

    JQuery代码 /* 新窗口打开链接:JQuery filter attr * 禁止鼠标弹出右键菜单:DOM contextmenu * 回到页面顶端:DOM scrollTo * 动态更换Css样 ...

  8. CentOS6.X安装vsftpd服务

    #-----------------CentOS6.X安装VSFTPD服务 #! /bin/sh #1.关闭selinux setenforce 0 sed -i 's/enforcing/disab ...

  9. AddToDate

    AddToDate is a PeopleCode built-in function for manipulating a date in PeopleCode. You can use it to ...

  10. 转载字典地址:http://blog.csdn.net/aladdinty/article/details/3591789

    相关文章: http://www.360doc.com/content/13/1003/23/14070959_318861279.shtml http://www.360doc.com/conten ...