
   k@g vector XR(extending) Queue
   (Queue inherites ~ a vector)

9:55pm ccbsd3:que5/> g++ testmyq5.cpp
9:55pm ccbsd3:que5/> ./a.out
88077053
9:55pm ccbsd3:que5/> cat -n testmyq5.cpp
    1 // testmyq5.cpp -- copyLeft by tsaiwn@csie.nctu.edu.tw
    2 //  g++ testmyq5.cpp  ; ./a.out
    3 using namespace std;
    4 #include "myq5.h"
    5 #include <iostream>
    6 //`NHUO 1999᪺ C++ sgk, ªkϥ <iostream.h>
    7 int main( ) {
    8     MyStack <int> x;    // `No!  O Queue ! 
    9     x.push(880);
   10     x.push(770);
   11     x.push(53);
   12     while( !x.empty() ) {
   13        cout << x.front();  x.pop();
   14     } // while
   15     cout << endl;
   16 }//main(

9:55pm ccbsd3:que5/> cat -n myq5.h
    1 //myq5.h  -- queue inherite vector  
    2 // k@g <vector> XR Queue ]OiH 
    3 // `NW٤s MyStack O Queue ; ~ӴNOXR extending
    4 #ifndef __MYQ5_H_
    5 #define __MYQ5_H_
    6 #include <vector>
    7 using namespace std;
    8 template <class T>
    9 class MyStack : vector<T> {   // actually is a queue
   10 public:
   11    void push(const T& y) {
   12       MyStack<T>::push_back(y);
   13    }
   14    T front( ) {   // Queue Y front( )
   15        return  vector<T>::front( );
   16    }//front(
   17    void pop( ) {
   18       if(!empty( ) )  // b@U :-)
   19           MyStack<T>::erase( MyStack<T>::begin( ) );
   20    }
   21    bool empty( ) { return MyStack<T>::begin() == MyStack<T>::end(); }
   22    T top( ) {
   23       return MyStack<T>::front( ); 
   24       //return  vector<T>::front( );  // OK too
   25       //return this -> front( );  // this is also OK
   26    }// top(
   27 };
   28 #endif

9:55pm ccbsd3:que5/> 
9:55pm ccbsd3:que5/> g++ testmyq5.cpp
9:55pm ccbsd3:que5/> ./a.out
88077053
9:55pm ccbsd3:que5/> exit
exit


D:\test> path C:\Dev-Cpp\bin;%path%

D:\test> g++ testmyq5.cpp

D:\test> a.exe
88077053

D:\test>
