zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    runc create container 流程分析
    cri-o pod 创建源码分析
    hyperstart 容器创建流程分析
    MIT jos 6.828 Fall 2014 训练记录(lab 4)
    python 邮件发送 脚本
    jvm: 理解gc日志
    jvm:垃圾收集器
    GC 垃圾收集
    jvm结构
    Java transient关键字使用小记
  • 原文地址:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_stl_004.html
Copyright © 2011-2022 走看看