Стек (Stack)
Любая последовательность, поддерживающая операции back, push_back и pop_back, может использоваться для модификации stack. В частности, могут использоваться vector, list и deque.
template <class Container> class stack { friend bool operator==(const stack<Container>& х, const stack<Container>& y); friend bool operator<(const stack<Container>& х, const stack<Container>& y); public: typedef Container::value_type value_type; typedef Container::size_type size_type; protected: Container c; public: bool empty() const { return c.empty(); } size_type size() const { return c.size(); } value_type& top() { return c.back(); } const value_type& top() const { return c.back(); } void push(const value_type& х) { с.push_back(х); } void pop() { c.pop_back(); } }; template <class Container> bool operator==(const stack <Container>& х, const stack<Container>& y) { return х.с == у.с;} template <class Container> bool operator<(const stack<Container>& х, const stack<Container>& y) { return х.с < у.с; }Например, stack<vector<int> > - целочисленный стек, сделанный из vector, а stack<deque<char> > - символьный стек, сделанный из deque.