循环队列(circular queue)
来源:互联网 发布:hp打印机端口设置 编辑:程序博客网 时间:2024/05/10 18:56
循环队列是非常有用的一个数据结构,在单读、单写入的情况下可以不必对共享的队列数据进行加锁,非常有利于提升并发的性能。下面是一个实例程序:
#include <vector>#include <stdio.h>template<typename T>class CircularQueue {public: CircularQueue(const size_t& size) : size_(size + 1), read_index_(0), write_index_(0) { data_.reserve(size_); } bool Push(const T& element) { size_t next_index = (write_index_ + 1) % size_; if (next_index == read_index_) { return false; } else { data_[write_index_] = element; write_index_ = next_index; } } bool Pop(T* element) { if (read_index_ == write_index_) { return false; } else { *element = data_[read_index_]; read_index_ = (read_index_ + 1) % size_; } }private: size_t read_index_; size_t write_index_; size_t size_; std::vector<T> data_;};int main(int argc, char** argv) { CircularQueue<int> circular_queue(100); int index = 0; while (circular_queue.Push(index)) { printf("%d\n", index); index++; } int value; while (circular_queue.Pop(&value)) { printf("--%d--\n", value); }}
值得一提的是boost有circular buffer的实现
参考文献:
http://en.wikipedia.org/wiki/Circular_buffer#Record_last_operation
http://www.boost.org/doc/libs/1_39_0/libs/circular_buffer/doc/circular_buffer.html
- 循环队列(circular queue)
- 循环队列(Circular Queue)
- 循环队列(Circular Queue)
- Circular Queue--循环队列
- 队列(queue)的链表(list)实现及循环数组(circular array)实现 C++实现
- 【数据结构与算法基础】以数组实现的循环队列 / Circular Queue implemented by array
- 队列(queue)的链表(list)实现及循环数组(circular array)实现 C++实现
- 循环Queue(队列)
- Circular Queue
- Circular Queue
- ※数据结构※→☆线性表结构(queue)☆============循环队列 顺序存储结构(queue circular sequence)(十)
- ※数据结构※→☆线性表结构(queue)☆============优先循环队列 顺序存储结构(queue priority circular sequence)(十三)
- Thread safe circular queue
- Circular Array implement Queue
- 循环队列的实现(Queue, C++版)
- 循环单链表(circular list)
- uva 133 The Dole Queue(循环队列)
- 大头锻炼日记6 -- vbscript中循环队列Queue
- 33333
- SOSO,你还能更无耻一点么
- 2012开班以来
- JavaScript
- Linux网络编程--struct hostent结构体
- 循环队列(circular queue)
- 方正笔记本每次开机都会数字转换成字母
- Linux和Windows中的时间管理
- 摩托罗拉手机串号查询
- Android原理揭秘系列之framework本地方法注册
- 虚拟文件系统
- 传统pc终端的淘汰和新兴手机终端的兴起
- Windows程序设计__孙鑫C++Lesson9《应用程序外观修改》
- Linux中文件权限的命令