• 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;
    }

    资料来源:传智播客

  • 相关阅读:
    Windows 之 手机访问 PC 端本地部署的站点
    Java 之 Given final block not properly padded
    关于ie7下display:inline-block;不支持的解决方案
    Oracle 之 获取当前日期及日期格式化
    WebService 之 实例学习一
    第 3 章 共享程序集和强命名程序集
    第 2 章 生成、打包、部署和管理应用程序及类型
    第一章 CLR的执行模型
    CLR 之 内容概述
    网站跨站点脚本,Sql注入等攻击的处理
  • 原文地址:https://www.cnblogs.com/wuchuanying/p/6262759.html
Copyright © 2020-2023  润新知