zoukankan      html  css  js  c++  java
  • C++STL学习笔记_(3)stack

    10.2.4stack容器

    Stack简介

    ²  stack是堆栈容器,是一种“先进后出”的容器。

    ²  stack是简单地装饰deque容器而成为另外的一种容器。

    ²  #include <stack> 

    stack对象的默认构造

    stack采用模板类实现, stack对象的默认构造形式: stack <T> stkT; 

    stack <int> stkInt;            //一个存放int的stack容器。

    stack <float> stkFloat;     //一个存放float的stack容器。

    stack <string> stkString;     //一个存放string的stack容器。

    ...                                    

    //尖括号内还可以设置指针类型或自定义类型。

    stack的push()与pop()方法

    stack.push(elem);   //往栈头添加元素

    stack.pop();   //从栈头移除第一个元素

    stack<int> stkInt;          

    stkInt.push(1);stkInt.push(3);stkInt.pop();  

    stkInt.push(5);stkInt.push(7); 

    stkInt.push(9);stkInt.pop();         

    stkInt.pop(); 

    此时stkInt存放的元素是1,5 

    stack对象的拷贝构造与赋值

    stack(const stack &stk);                //拷贝构造函数

    stack& operator=(const stack &stk);      //重载等号操作符

                       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;                                //赋值

    stack的数据存取

    ²  stack.top();           //返回最后一个压入栈元素

                       stack<int> stkIntA;

                       stkIntA.push(1);

                       stkIntA.push(3);

                       stkIntA.push(5);

                       stkIntA.push(7);

                       stkIntA.push(9);

                       int iTop = stkIntA.top();             //9

                       stkIntA.top() = 19;                      //19

    stack的大小

    ²  stack.empty();   //判断堆栈是否为空

    ²  stack.size();            //返回堆栈的大小

                       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 main51()
    {
        stack<int> s;
    
        //入栈
        for (int i = 0;i <10;i++)
        {
            s.push(i+1);
        }
        cout<<"栈的大小"<<s.size()<<endl;
    
        //出栈
        while (!s.empty())
        {
            int tmp  = s.top();  //获取栈顶元素
            cout<<tmp<<" ";
            s.pop();             //弹出栈顶元素
        }
    }
    
    //teacher节点
    class Teacher
    {
    public:
        int age;
        char name[32];
    public:
        void prinT()
        {
            cout<<"age:"<<age<<endl;
        }
    };
    
    void main52()
    {
        Teacher t1,t2,t3;
        t1.age  = 31;
        t2.age  = 32;
        t3.age  = 33;
    
        stack<Teacher> s;
        s.push(t1);
        s.push(t2);
        s.push(t3);
    
        while (!s.empty())
        {
            Teacher tmp    = s.top();
            tmp.prinT();
            s.pop();
        }
    }
    
    void main53()
    {
        Teacher t1,t2,t3;
        t1.age  = 31;
        t2.age  = 32;
        t3.age  = 33;
    
        stack<Teacher *> s;
        s.push(&t1);
        s.push(&t2);
        s.push(&t3);
    
        while(!s.empty())
        {
            Teacher *p = s.top();
            p->prinT();
            s.pop();
        }
    }
    
    
    void main()
    {
        main51();
        main52();
        cout<<"hello...
    "<<endl;
        system("pause");
        return;
    }

    资料来源:传智播客

  • 相关阅读:
    知物由学 | 未来安全隐患:AI的软肋——故意欺骗神经网络
    IT和非IT人士:2分钟了解什么是区块链
    追踪掠食者:地下灰产如何撸死创业公司?
    机器学习、深度学习、和AI算法可以在网络安全中做什么?
    一文了解安卓APP逆向分析与保护机制
    如何做好iOS应用安全?这有一把行之有效的“三板斧”
    微服务化不同阶段 Kubernetes 的不同玩法
    从B站、爱奇艺、映客的IPO上市,看国内视频公司的内容审核现状
    知物由学 | 你的网络安全问题背后的真正原因
    感动到流泪!数据分析师的福音:跨视图粒度计算
  • 原文地址:https://www.cnblogs.com/wuchuanying/p/6262759.html
Copyright © 2011-2022 走看看