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); //放进去1
    stkInt.push(3);  //放进去3
    stkInt.pop();  //弹出来一个元素
    stkInt.push(5);  //放进去5
    stkInt.push(7); //放进去7
    stkInt.push(9); //放进去9     此时元素就是1,5,7,9
    stkInt.pop(); //弹出来一个元素
    stkInt.pop();//弹出来一个元素   此时元素就是1,5

}
int main()
{
  objPlay2();
return 0;
}

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

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

}

 4.stack的数据存取

  • stack.top();           //返回最后一个压入栈元素
void objPlay4()
{
    stack<int> stkIntA;
    stkIntA.push(1);
    stkIntA.push(3);
    stkIntA.push(5);
    stkIntA.push(7);
    stkIntA.push(9);

    int iTop = stkIntA.top();        //获取栈顶元素,那就是9,top只是获取栈顶元素,pop是弹出栈顶元素
    stkIntA.top() = 19;            //19

}

5.stack的大小

  • stack.empty();   //判断堆栈是否为空
  • stack.size();             //返回堆栈的大小
void objPlay5()
{
    stack<int> stkIntA;
    stkIntA.push(1);
    stkIntA.push(3);
    stkIntA.push(5);
    stkIntA.push(7);
    stkIntA.push(9);

    if (!stkIntA.empty())
    {
        int iSize = stkIntA.size();        //5个元素
    }

}

下面是以上的所有代码:

#include<iostream>
using namespace std;
#include <stack>
void objPlay2()
{
    stack<int> stkInt;
    stkInt.push(1); //放进去1
    stkInt.push(3);  //放进去3
    stkInt.pop();  //弹出来一个元素
    stkInt.push(5);  //放进去5
    stkInt.push(7); //放进去7
    stkInt.push(9); //放进去9     此时元素就是1,5,7,9
    stkInt.pop(); //弹出来一个元素
    stkInt.pop();//弹出来一个元素   此时元素就是1,5

}
void objPlay3()
{
    stack<int> stkIntA;
    stkIntA.push(1);
    stkIntA.push(3);
    stkIntA.push(5);
    stkIntA.push(7);
    stkIntA.push(9);
    stack<int> stkIntB(stkIntA);        //拷贝构造
    stack<int> stkIntC;
    stkIntC = stkIntA;                //赋值

}
void objPlay4()
{
    stack<int> stkIntA;
    stkIntA.push(1);
    stkIntA.push(3);
    stkIntA.push(5);
    stkIntA.push(7);
    stkIntA.push(9);

    int iTop = stkIntA.top();        //获取栈顶元素,那就是9,top只是获取栈顶元素,pop是弹出栈顶元素
    stkIntA.top() = 19;            //19

}
void objPlay5()
{
    stack<int> stkIntA;
    stkIntA.push(1);
    stkIntA.push(3);
    stkIntA.push(5);
    stkIntA.push(7);
    stkIntA.push(9);

    if (!stkIntA.empty())
    {
        int iSize = stkIntA.size();        //5个元素
    }

}
int main()
{
    objPlay2();
    objPlay3();
    objPlay4();
    objPlay5();

    return 0;
}
时间: 2024-07-30 13:51:44

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

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

标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据.为了可以使用vector,必须在你的头文件中包含下面的代码:#include <vector>构造函数. Vectors 包含着一系列连续存储的元素,其行为和数组类

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

1.简介 Identity Server4支持用户名密码模式,允许调用客户端使用用户名密码来获得访问Api资源(遵循Auth 2.0协议)的Access Token,MS可能考虑兼容老的系统,实现了这个功能,但是不建议这么做. 2.实战一服务端配置 接着Identity Server4学习系列三的基础上,直接扩展里面的项目代码,让服务端同时支持密钥认证和用户名密码认证 第一步:扩展ThirdClients类,如下: /// <summary> /// 配置可以访问IdentityServer4

STL学习系列七:优先级队列priority_queue容器

1.简介 最大值优先级队列.最小值优先级队列 优先级队列适配器 STL priority_queue 用来开发一些特殊的应用,请对stl的类库,多做扩展性学习 如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了.这样,我们就引入了优先级队列 这种数据结构. 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一

STL学习系列三:Deque容器

1.Deque简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的. deque在接口上和vector非常相似,在许多操作的地方可以直接替换. deque可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲). deque头部和尾部添加或移除元素都非常快速.但是在中部安插元素或移除元素比较费时. 2.deque对象的默认构造 deque采用模板类实现,deque对象的默认构

STL学习系列五:Queue容器

Queue简介 queue是队列容器,是一种“先进先出”的容器. queue是简单地装饰deque容器而成为另外的一种容器. #include <queue> 1.queue对象的默认构造 queue采用模板类实现,queue对象的默认构造形式:queue<T> queT; 如: queue<int> queInt; //一个存放int的queue容器. queue<float> queFloat; //一个存放float的queue容器. ... //尖括

STL学习系列六:List容器

List简介 list是一个双向链表容器,可高效地进行插入删除元素. list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符.it++(ok), it+5(err) #include <list> 1.list对象的默认构造 list采用采用模板类实现,对象的默认构造形式:list<T> lstT;  如: list<int> lstInt;            //定义一个存放int的list容器. list<float> lstFloa

STL学习三:deque容器

1.Deque简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的. deque在接口上和vector非常相似,在许多操作的地方可以直接替换. deque可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲). deque头部和尾部添加或移除元素都非常快速.但是在中部安插元素或移除元素比较费时. 2.deque对象的默认构造 deque采用模板类实现,deque对象的默认构

STL学习二:Vector容器

1.Vector容器简介 vector是将元素置于一个动态数组中加以管理的容器. vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲). vector尾部添加或移除元素非常快速.但是在中部或头部插入元素或移除元素比较费时. 2.vector对象的默认构造 vector采用模板类实现,vector对象的默认构造形式 vector<T> vecT; vector<int> vecInt;          //一个存放int的vector容器

Android SDK范例源码学习系列四 AppNavigation

 (本系列基于Jelly Bean,Android OS4.2,API 17版本) 就算是最简单的应用程序也会拥有不止一项功能,因此我们经常要应对多个Activity.主Activity随应用程序启动而启动,可以通过触发事件开启另外的Activity.要想激活应用中的某个特定组件,可以用显式命名的Intent来实现,也可以采用隐式Intent,尽可能选用隐式的,它能为模块化功能提供强大的框架. 隐式Intent不需要指定要使用哪个组件,它们通过过滤器指定所需的功能,而Android系统必须决定使