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 */