环形队列使用之万能模板

环形队列在之前的篇幅中已经介绍了,这里介绍使用一种万能的模板适合任意场景

#ifndef _CIRCLESESSION_H_
#define _CIRCLESESSION_H_
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;

template <typename T>
//定义最大的字符长度 
#define MAXLEN  1024*1024
class  QueueSender{
    public:
         QueueSender() : mFront(0), mRear(0), mSize(MAXLEN){
            mData = new T[mSize];
            
        }    
        ~ QueueSender(){
            delete []mData;
        }
bool isEmpty() const{ //判断是否为空
    if(mFront == mRear){
        return true;
    }
    else{
        return false;
    }
}
bool isFull(){ //判断队列是否满了
    if(mFront==(mRear + 1) % mSize){
        return true;
    }
    else{
        return false;
    }
}
int  pushData(T element, unsigned long size) {
    if(!isFull()){
        mSize = size;
        mData[mRear] = element;
        mRear++;
        mRear=(mRear + 1) % mSize;
        return 0;
    }else
        return -1;
}
void cleardata(){
    mFront = 0;
    mRear = 0;
    mSize = MAXLEN;     
}
void  popData(T &element) {
if(!isEmpty()){
        element  = mData[mFront];
        mFront++;
        mFront = (mFront + 1) % mSize;
        return;
    }
}
private:
    unsigned long mSize;
    int mFront;
    int mRear;
    T*  mData;
};
#endif

发布了37 篇原创文章 · 获赞 19 · 访问量 873

猜你喜欢

转载自blog.csdn.net/zuiyijiangnan/article/details/103504706