#include <iostream> using namespace std; template<typename T> class myQueue { public: myQueue() : head(0), tail(0), length(0) { //memset(a, 0, sizeof(a)); //没有string数组 a = new T[maxn]; } ~myQueue(); void push(const T&); void pop(); T& front(); int size() const { return length; } bool empty() const; bool full() const { return (tail + 1) % maxn == head; } void destory(); private: static const int maxn = 255; int head, tail, length; T *a; }; template<typename T> myQueue<T>::~myQueue() { delete[] a; } template<typename T> bool myQueue<T>::empty() const{ return size() == 0; } template<typename T> void myQueue<T>::push(const T& val) { a[tail] = val; tail = (tail + 1) % maxn; length++; } template<typename T> T& myQueue<T>::front() { return a[head]; } template<typename T> void myQueue<T>::pop() { head = (head + 1) % maxn; length--; } template<typename T> void myQueue<T>::destory() { while(!empty()) pop(); } int main(void) { // myQueue<int> q; // // for(int i = 0; i < 257; i++) // { // if(!q.full()) // q.push(i); // } // // while(!q.empty()) // { // cout << q.front() << endl; // q.pop(); // } // myQueue<double> q; // q.push(1.1); // q.push(0.22); // // cout << q.size() << endl; // cout << q.front() << endl; myQueue<string> q; q.push("lalala"); cout << q.front() << endl; return 0; }