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

    资料来源:传智播客

  • 相关阅读:
    二分法查找
    重构方法之一:提炼方法(Extract Method)读书笔记
    使用SQL命令手动写入Discuz帖子内容
    调整linux系统时间和时区
    怎样给访问量过大的mysql数据库减压
    MySQL提示“too many connections”的解决办法
    CentOS 6安装php加速软件Zend Guard
    CmsTop 大众版运行环境搭建 (CentOS+Nginx+PHP FastCGI)
    LEMP构建高性能WEB服务器(CentOS+Nginx+PHP+MySQL)
    CentOS-6.3安装配置Nginx
  • 原文地址:https://www.cnblogs.com/wuchuanying/p/6262759.html
Copyright © 2011-2022 走看看