1. template <typename _T>  
  2. class CArrayQueue {  
  3. public:  
  4.     CArrayQueue() {  
  5.         m_rear = 0;  
  6.         m_front = 0;  
  7.         m_array = new _T[m_num];  
  8.     }  
  9.     bool full() const 
  10.     {  
  11.         return ((m_rear+1) % m_num == m_front);  
  12.     }  
  13.     bool empty() const 
  14.     {  
  15.         return (m_front == m_rear);  
  16.     }  
  17.     void push(const _T& t) {  
  18.         array[m_rear] = t;  
  19.         m_rear = (m_rear+1) % m_num;   
  20.     }  
  21.     _T& pop() {  
  22.         _T& t= array[m_front];  
  23.         m_front = (m_front+1) % m_num;  
  24.         return t;  
  25.     }  
  26. private:  
  27.     _T* array;  
  28.     int m_rear;  
  29.     int m_front;  
  30. };