看了很多网上的手写队列,都有些怪怪的,STL又太慢了,特此放一个在这:
#ifndef MYQUEUE
#define MYQUEUE
#include<bits/stdc++.h>
using namespace std;
template<typename T>
class mqueue
{
T* data;
int begin;
int end;
int length,max_len;
public:
mqueue(int Max_len):max_len(Max_len){
data = new T[Max_len];
begin = 0;
end = 0;
length =0;
}
~mqueue(){
delete data;
}
void clear(){
end=length=begin=0;
return;
}
//入队:push
void push(T tmp)
{
if(length == max_len)
{
return;
}
if(end==max_len){
if(begin>0)
end=0;
else return;
};
data[end] = tmp;
end++;
length++;
return;
}
//出队:pop
T pop()
{
if(length == 0)
{
return 0;
}
begin++;
length--;
return data[begin-1];
}
//队头:front
T front()
{
if(length == 0)
{
return 0;
}
return data[begin];
}
//对大小:size
int size()
{
return length;
}
bool empty(){
return length==0;
}
};
#endif