Шаг 330.
Библиотека STL.
Специальные контейнеры. Стеки. Строение класса stack

    На этом шаге мы приведем типичную реализацию класса stack.

    Интерфейс класса stack<> настолько компактен, что в нем можно легко разобраться, проанализировав типичную реализацию:

namespace std {
    template <class T, class Container = deque<T> >
    class stack {
      public:
        typedef typename Container::value_type value_type;
        typedef typename Container::size_type  size_type;
        typedef          Container             container_type;
      protected:
        Container c;   // Контейнер
      public:
        explicit stack(const Container& = Container());

        bool        empty() const             { return c.empty(); }
        size_type   size()  const             { return c.size(); }
        void        push(const value_type& x) { c.push_back(x); }
        void        pop()                     { c.pop_back(); }
        value_type& top()                     { return c.back(); }
        const value_type& top() const         { return c.back(); }
    };

    template <class T, class Container>
      bool operator==(const stack<T, Container>&,
                      const stack<T, Container>&);
    template <class T, class Container>
      bool operator< (const stack<T, Container>&,
                      const stack<T, Container>&);
    ... // (Другие операторы сравнения)
}

    В следующих шагах приводятся более подробные описания членов класса stack<>.

    Со следующего шага мы более подробно рассмотрим приведенную реализацию класса stack.




Предыдущий шаг Содержание Следующий шаг