Listing 2: Template class <queue>
// TEMPLATE CLASS queue
template<class TY, class C = deque<TY> >
class queue {
public:
typedef C container_type;
typedef typename C::value_type value_type;
typedef typename C::size_type size_type;
explicit queue()
: c() {}
explicit queue(const C& Cont)
: c(Cont) {}
bool empty() const
{return (c.empty()); }
size_type size() const
{return (c.size()); }
value_type& front()
{return (c.front()); }
const value_type& front() const
{return (c.front()); }
value_type& back()
{return (c.back()); }
const value_type& back() const
{return (c.back()); }
void push(const value_type& X)
{c.push_back(X); }
void pop()
{c.pop_front(); }
bool operator==(const queue<TY, C>& X) const
{return (c == X.c); }
bool operator!=(const queue<TY, C>& X) const
{return (!(*this == X)); }
bool operator<(const queue<TY, C>& X) const
{return (c < X.c); }
bool operator>(const queue<TY, C>& X) const
{return (X < *this); }
bool operator<=(const queue<TY, C>& X) const
{return (!(X < *this)); }
bool operator>=(const queue<TY, C>& X) const
{return (!(*this < X)); }
protected:
C c;
};
/* End of File */