#include #include #include const int csize=3; template class QueueIter; class IndexError{}; template class queue{ T *q; int back; int front; int num; friend class QueueIter; public: QueueIter GetIterator() { QueueIter s(*this); return s; } queue(){ front=back=0; cout<<"enter number of element:"; cin>>num; if(num>csize) expand(2*csize); q=new T[csize]; for(int i=0;i>q[i]; back++; } } //*********************** queue(queue &s){ front=s.front; back=s.back; num=s.num; for(int i=0;i &operator =(queue &s){ if(num class QueueIter { queue &theque; int current; public: QueueIter(queue &s):theque(s),current(0){} void first(){current=0;} T &retrive() throw(IndexError) { if(current>theque.back) throw(IndexError()); return theque.q[current]; } void Next(){current++;} int valid() { if(current>=theque.back) return 0; return -1; } }; ////////////////////////////////////////////////////// ///////////////////////////////////////////////////// ///////////////////////////////////////////////////// template ostream &operator<<(ostream &o,queue r) { r.print(o); return o; } ///////////////////////////////////////////////////// //////////////////////////////////////////////////// //////////////////////////////////////////////////// int main(){ queue s; cout<<"******************Queue is******************"< iter=s.GetIterator(); while(iter.valid()) { cout<