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容器的更多相关文章

  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. Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间

    alter table userInfo add(msn varchar2(20)); 1.建表 create table userInfo ( id number(6), name varchar2 ...

  2. Windows Phone开发(12):认识一下独具个性的磁贴(转)

    对"磁贴"的理解是一点也不抽象的,为什么呢?只要你愿意启动WP系统,无论你是在模拟器中还是在真机中,是的,桌面上那一块块像地板的玩意儿,就是磁贴了.(图:磁贴) 在上图中,我们很直 ...

  3. LDAP介绍

    摘自: http://www.blogjava.net/allen-zhe/archive/2007/03/19/104740.html LDAP介绍 原文:http://ldapman.org/ar ...

  4. Belkasoft Evidence Center could handle Chinese characters well

    I've been using Belkasoft Evidence Center for a very long time. It could handle Chinese characters w ...

  5. CSS 居中效果完整指南

    本文翻译自:<Centering in CSS: A Complete Guide> 使用 CSS 实现效果困难吗?显然不是.实际上有许多方法可以实现居中效果,但在具体情况中,我们往往无法 ...

  6. Linux日志

    一.Linux 常見的日志文件 /var/log/cron:你的 crontab 排程有没有实际被进行? 进行过程有没有发生错误?你的 /etc/crontab 是否撰写正确?在这个登录档内查询看看. ...

  7. 信息图形(Infographic)

    信息图形(Infographic),又称为信息图,是指数据.信息或知识的可视化表现形式.信息图形主要应用于必须要有一个清楚准确的解释或表达甚为复杂且大量的信息,例如在各式各样的文件档案上.各个地图及标 ...

  8. chrome调试学习

    参考:http://ued.taobao.com/blog/2012/06/debug-with-chrome-dev-tool/ http://guoshuang.com/frontend/chro ...

  9. C# DataGridViewComboBoxColumn 数据绑定

    dataGridView1.Columns.Clear(); dataGridView1.AutoGenerateColumns = false; dataGridView1.DataSource = ...

  10. IIS安装错误导致网站访问不了

    如下图,网站正常但就是访问不了,原因是IIS配置不正确,把ASP.NET4.5等相关勾选上就可以了,不要用默认的勾选,要自己手动勾选.