首页 > 编程语言 > 详细

C++STL学习笔记_(1)stack

时间:2017-01-08 22:30:16      阅读:276      评论:0      收藏:0      [点我收藏+]

10.2.4stack容器

Stack简介

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

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

2  #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的数据存取

2  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的大小

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

2  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...\n"<<endl;
    system("pause");
    return;
}

资料来源:传智播客

C++STL学习笔记_(1)stack

原文:http://www.cnblogs.com/wuchuanying/p/6262759.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!