stack与queue

来源:互联网 发布:unix 环境高级编程 3 编辑:程序博客网 时间:2024/05/16 05:26

1.stack

#include<deque.h> template <class T,class Sequence = deque<T>>class stack{public:    typedef typename Sequence::value_type value_type;    typedef typename Sequence::size_type size_type;    typedef typename Sequence::reference reference;    typedef typename Sequence::const_reference const_reference;protected:    Sequence c;public:    bool empty() const    {        return c.empty();    }    size_type size() const    {        return c.size();    }    reference top() const    {        return c.back;    }    const_reference top() const    {        return c.back;    }    void push(const value_type& x)    {        c.push_back(x);    }    void pop()    {        c.pop_back;    }    bool operator == (const stack<T, Sequence>& x, const stack<T, Sequence>& y)    {        return x.c == y.c;    }    bool operator < (const stack<T, Sequence>& x, const stack<T, Sequence>& y)    {        return x.c < y.c;    }};

2.queue

template<class T , class Sequence = deque<T>>class queue{public:    typedef typename Sequence::value_type value_type;    typedef typename Sequence::size_type size_type;    typedef typename Sequence::reference reference;    typedef typename Sequence::const_reference const_reference;protected:    Sequence c;public:    bool empty() const    {        return c.empty();    }    size_type size() const    {        return c.size();    }    reference front()    {        return c.front();    }    const_reference front() const    {        return c.front();    }    reference back()    {        return c.back();    }    const_reference back() const    {        return c.back();    }    void push(const value_type& x)    {        c.push_back(x);    }    void pop()    {        c.pop_front();    }    bool operator == (const stack<T, Sequence>& x, const stack<T, Sequence>& y)    {        return x.c == y.c;    }    bool operator < (const stack<T, Sequence>& x, const stack<T, Sequence>& y)    {        return x.c < y.c;    }};
0 0