• 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;
    }
  • 相关阅读:
    php操作mysql数据库
    Java获得某目录下文件总大小
    Flex Air 主窗口和多个子窗口从属显示 拂晓风起
    actionscript AES 加密 解密 拂晓风起
    Flex 可以拖出窗口的panel 拖动panel变为窗口 拂晓风起
    Flash builder打包as actionscript代码,发布swc 拂晓风起
    网站安全登录 web应用安全登录 密码 防截获 拂晓风起
    Flex透明窗体做法 spark的Window加Skin 拂晓风起
    PHP开发环境搭建 (XAMPP+Xdebug+netbeans,配置调试) 拂晓风起
    SSH 项目过程中遇到的问题和解决方法汇总 struts2 spring hibernate 拂晓风起
  • 原文地址:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_stl_004.html
Copyright © 2020-2023  润新知