头文件实现
#ifndef ARRAY_QUEUE_HXX
#define ARRAY_QUEUE_HXX
#include <iostream>
using namespace std;
template<class T> class ArrayQueue{
public:
ArrayQueue();
~ArrayQueue();
void add(T t);
T front();
T pop();
int size();
int is_empty();
private:
T *arr;
int count;
};
template<class T>
ArrayQueue<T>::ArrayQueue()
{
arr = new T[12];
if (!arr)
{
cout<<"arr malloc error!"<<endl;
}
}
template<class T>
ArrayQueue<T>::~ArrayQueue()
{
if (arr)
{
delete[] arr;
arr = NULL;
}
}
template<class T>
void ArrayQueue<T>::add(T t)
{
arr[count++] = t;
}
template<class T>
T ArrayQueue<T>::front()
{
return arr[0];
}
template<class T>
T ArrayQueue<T>::pop()
{
int i = 0;;
T ret = arr[0];
count--;
while (i++<count)
arr[i-1] = arr[i];
return ret;
}
template<class T>
int ArrayQueue<T>::size()
{
return count;
}
{
return count==0;
}
#endif
测试
#include<iostream>
#include"ArrayQueue.h"
using namespace std;
int main(){
int tmp = 0;
ArrayQueue<int>* astack = new ArrayQueue<int>();
astack->add(10);
astack->add(20);
astack->add(30);
tmp = astack->pop();
cout<<"tmp="<<tmp<<endl;
tmp = astack->front();
cout<<"tmp="<<tmp<<endl;
astack->add(40);
cout<<"is_empty()="<<astack->is_empty()<<endl;
cout<<"size()="<<astack->size()<<endl;
while (!astack->is_empty())
{
tmp = astack->pop();
cout<<tmp<<endl;
}
return 0;
}