
Τ@Ӥk@g vector ӰX  Queue  (Queue contains a vector)

9:56pm ccbsd3:que6/> g++ testmyq6.cpp
9:56pm ccbsd3:que6/> ./a.out
88077053
9:56pm ccbsd3:que6/> cat -n testmyq6.cpp
   01 // testmyq6.cpp -- copyLeft by tsaiwn@csie.nctu.edu.tw
   02 //  g++ testmyq6.cpp  ; ./a.out
   03 using namespace std;
   04 #include "myq6.h"
   05 #include <iostream>
   06 //
   07 int main( ) {
   08     MyStack <int> x;    // `No!  O Queue ! 
   09     x.push(880);
   10     x.push(770);
   11     x.push(53);
   12     while( !x.empty( ) ) {
   13        cout << x.top( );  x.pop( );
   14     } // while
   15     cout << endl;
   16 }//main(


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

9:56pm ccbsd3:que6/> 
9:56pm ccbsd3:que6/> g++ testmyq6.cpp
9:56pm ccbsd3:que6/> ./a.out
88077053
9:56pm ccbsd3:que6/> exit
exit


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

D:\test> g++ testmyq6.cpp

D:\test> a.exe
88077053

D:\test>
