这几天,我在闲暇之时,自己写了一个vector_queue,代码如下:
template <typename T> class vector_queue//这里的T是类型名占用符,可以是任何名字
{
public:
vector_queue(){//新建一个
arr=new T[true_size];
size=0;
}
~vector_queue(){//析构函数,运行结束后自动调用
delete [ ] arr;
}
bool empty(){ //是否为空
return size==0;
}
int getcapacity(){//分配空间
if(size<268349205)
return size+100;
else
return 268349205;
}
void push_back(T item ){//从后插入元素
if(size==true_size){
terminate();//表示运行出错,c++自带函数
}else{
arr[size]=item;
size++;
}
}
void pop_back(){//从前插入元素
if(empty()){
terminate();
}else{
size--;
}
}
void push_front(T item){//从前插入元素
size++;
for(int i=0;i<size;i++){
arr[i+1]=arr[i];
}
arr[0]=item;
}
void pop_front(){//从前删除元素
size--;
if(empty()){
terminate();
}else
for(int i=0;i<size;i++){
arr[i]=arr[i+1];
}
}
T &operator[](int item){
if(item<size){
return arr[item];
}else{
terminate();
}
}//下标运算
T begin(){//返回队头元素
if(empty()){
terminate();
}else
return arr[0];
}
T end(){//返回末尾元素
if(empty()){
terminate();
}else{
return arr[size-1];
}
}
T swap(T a,T b){//自带的交换函数
T temp=a;
a=b;
b=temp;
}
int sort(){ //元素排序
for(int i=0;i<size;++i){
for(int j=0;j<size;++j){
if(arr[j]>arr[i]){
if(j!=i){
swap(arr[i],arr[j]);
}
}
}
}
}
int get_size(){//返回长度
return size;
}
void erase(int begining){//删除指定位置的元素与下标同位
size--;
if(empty() || begining>size+1){
terminate();
}else
for(int i=begining;i<size;i++){
arr[i]=arr[i+1];
}
}
private:
T *arr;
int size;
const int true_size=268349215;//设置长度上限
};