C++ 标准模板库(STL)-stack

主要介绍一下C++11版本中标准模板库中栈的用法,希望可以帮到需要用的人。

 

#include <iostream>
#include <stack>
#include <list>
#include <vector>
using namespace std;
//c++11 STL stack


typedef int T;
int main()
{
    
    //声明
    //底层容器默认为 deque
    stack<T> test;
    //底层容器为 list
    stack<T, list<T>> test1;
    /*
    stack<typename T, typename Container=deque<T>>
    stack 的模板有两个参数,第一个为存储的元素的类型,第二个是底层容器的类型(默认为deque,也可声明为其他类型,如list)
    */
    //初始化
    vector<T> data(10, 1);//vector初始化10个值为1的元素
    stack<T, vector<T>> test3(data);//stack不可以在初始化列表用对象初始化,但是可以用另一个容器初始化
    stack<T, vector<T>> test4{ test3 };
    stack<T, vector<T>> test4( test3 );//stack可以用拷贝构造函数进行初始化,两种括号均可



    //成员函数
    test.top();//返回栈顶元素的引用,类型为T&
    test.size();//返回栈顶元素的个数
    test.pop();//弹出栈顶元素,无返回值,
    test.push(1);//压栈,无返回值
    test.empty();//判断栈是否为空,空返回true,非空返回false
    test.emplace();//添加新的栈顶元素,无返回值,push的所有操作emplace都可以进行,但emplace可以在传入时构造函数
    //push与emplace详细区别 详细参考 https://blog.csdn.net/Kprogram/article/details/82055673
    stack<T> test0;
    test.swap(test0);//交换两个栈中所有元素,前提是类型必须相同



    return 0;
}

 

posted @ 2020-03-15 22:59  张浩东zhanghad  阅读(269)  评论(0编辑  收藏  举报