一个比较实用的循环队列
来源:互联网 发布:网络如何挣钱 编辑:程序博客网 时间:2024/06/05 16:40
最近任务比较繁重,没什么时间写博客,只能勉强附上之前写的一个还算比较实用的循环队列,工程上可以用得上,敬请笑纳
#pragma once#include <string>using namespace std;#include "Mutex.h"#define CirQueueSize 1000;template <class ELEMENT_TYPE> //循环队列模板类class CirQueue{public:CirQueue(void) //默认大小:CirQueueSize{Array=NULL;MAXSIZE = CirQueueSize;Array = new ELEMENT_TYPE[MAXSIZE];front = 0;rear = front;if(Array == NULL)lastError="开辟内存空间失败!";elselastError="";}CirQueue(unsigned int size){Array=NULL;MAXSIZE = size;Array = new ELEMENT_TYPE[size];front = 0;rear = front;if(Array == NULL)lastError="开辟内存空间失败!";elselastError="";}~CirQueue(void){if(Array!=NULL)delete[] Array;}int Length()//循环队形长度{return (rear + MAXSIZE - front)%MAXSIZE;}bool isEmpty()//循环队形是否空{Mutex::Lock lock(_mutex);return front == rear;}bool isFull()//循环队形是否满{return Length() == MAXSIZE - 1;}void clear()//循环队形清空{Mutex::Lock lock(_mutex);front=rear;}ELEMENT_TYPE& operator[](int index){return Array[index];}bool enQueue(const ELEMENT_TYPE& element)//入队{Mutex::Lock lock(_mutex);if(isFull()){lastError="队列数据已满,插入数据失败!";return false;}Array[rear] = element; //深复制rear = (rear + 1) % MAXSIZE;return true;}bool deQueue(ELEMENT_TYPE& element) //出队{Mutex::Lock lock(_mutex);if(front == rear){lastError="队列为空,读取数据失败!";return false;}element = Array[front]; //深复制front = (front+1) % MAXSIZE;return true;}std::string lastError;private:int front; //头 int rear; //尾int MAXSIZE;//元素总数ELEMENT_TYPE * Array;Mutex _mutex;//互斥变量};
关于互斥变量Mutex类是使用Qt库封装的互斥类,可以考虑使用其他的如boost库或标准库来实现。
- 一个比较实用的循环队列
- 一个比较实用的JDBC连接类
- 一个比较实用的jQuery例子
- 一个比较实用的考试系统
- 队列---循环队列与链队列比较
- 循环队列的一个简单实现
- 循环队列比较好的实现方法-赋java代码
- 一个比较实用的提示(JavaScript写的)
- 网上搜集的一个比较实用的图片操作类
- 网上搜集的一个比较实用的图片操作类
- 一个比较实用的大数据量分页存储过程
- 一个比较实用的大数据量分页存储过程 (转)
- 一个比较实用的asp函数集合类
- 一个比较实用的大数据量分页存储过程
- 一个比较实用的大数据量分页存储过程
- 转一个比较实用的TAB切换 JAVASCRIPT+CSS
- 一个比较实用的国内IT公司研发部技术管理规范
- 比较实用的一个知识点——Android:interpolator用法
- 查看电脑详细配置命令
- 统计数据的真相
- POJ 2481 Cows
- 关于在pjsip中添加视频的流程说明
- 深入学习《Programing Hive》:数据操纵DML(Data Manipulation Language)
- 一个比较实用的循环队列
- CVTE实习求职经历
- MFC标签页控件的使用
- More Effective C++读书笔记(一)
- activity BroadcastReceiver Service 三大组件的启动或触发
- html5shiv
- 单元格的编辑的方法
- solr LuceneContext
- More Effective C++读书笔记(二)