zoukankan      html  css  js  c++  java
  • 【C++ STL】Stack

    1、定义

      class stack<> 实作出一个stack(也成为LIFO,后进先出),你可以使用push()将任意数量的元素置入stack中,也可以使用pop()将元素依次插入次序反序从容器移除(即后进先出)。

      在<stack>中,class stack定义如下:

    namespace std {
           template <class T,
                     class Container = deque<T> >
           class stack;
       }

      第一个template参数代表元素型别。带有默认值的第二个template参赛用来定义stack内部存放元素的实际容器,缺省采用的是deque。之所以采用deque是因为deque移除元素会释放内存,并且不用重新分配内存时复制所有元素。

      例如定义一个元素型别为整数的stack:

    std::stack<int> st;     // integer stack

      实际上,stack只是将各项操作转化为内部容器的各项调用,可以使用任何序列式容器来支持stack,只要它支持back(),push_back(),pop_back()等操作。

      例如使用vector来容纳元素:

    std::stack<int,std::vector<int> > st;     // integer stack that uses a vector

    2、核心接口

    stack就三个接口函数,push(),top(),pop()。

    • push()会将一个元素放入stack中。
    • top()会返回stack中的栈顶元素,返回的是reference,可以就地修改值。
    • pop()移除栈顶元素,无返回值。
    • size()返回stack长度。
    • empty()返回stack是否为空。
  • 相关阅读:
    nyoj592 spiral grid
    ny788 又见Alice and Bob
    hdoj 1166 敌兵布阵 线段数和树状数组
    nyoj228 士兵杀敌(5)插线问线
    nyoj576 集齐卡片赢大奖(一)
    ny269 VF
    AC Again hdoj 1582 搜索
    nyoj123 士兵杀敌(四)树状数组 插线问点
    CRAVAT: Cancer-Related Analysis of VAriants Toolkit
    第二代无创胎儿基因组分析结果
  • 原文地址:https://www.cnblogs.com/ChinaHook/p/6985544.html
Copyright © 2011-2022 走看看