BOOST库的环形队列比较灵活,前插或后插,删除队首或删除队尾元素,都支持。

只贴代码:

#include <boost/circular_buffer.hpp>
#include <numeric>
#include <assert.h>
#include <iostream>
using namespace std; class C_usrdata{
public:
int x;
int y;
}; void DispCirBuff(boost::circular_buffer<C_usrdata> &oCircularBuffer){ for(boost::circular_buffer<C_usrdata>::iterator it=oCircularBuffer.begin(); it!=oCircularBuffer.end(); it++){
cout << (*it).x << " " << (*it).y << endl;
}
cout << endl;
} int main(int argc, char*argv[])
{
// 创建一个容量为3的循环缓冲区
boost::circular_buffer<C_usrdata> cb(3); // 插入一些元素到循环缓冲区
C_usrdata data1 = {1, 1.34};
C_usrdata data2 = {2, 2.34};
cb.push_back(data1);
cb.push_back(data2); // 断言
cout << cb[0].y << endl; assert(!cb.full());
assert(cb.size() == 2);
assert(cb.capacity() == 3); cout << " running ok" << endl; // 再插入其它元素
C_usrdata data3 = {3, 3.34};
cb.push_back(data3); cout << "队列已经满时,继续插入元素 -- 实验" << endl;
C_usrdata data4 = {4, 4.34};
cb.push_back(data4);
// 当队列已经满时,继续插入元素,最前面的元素将会被挤出去。
// 预测:此时队列中的数据从前往后,应该是: data2 data3 data4
DispCirBuff(cb); cout << "向队列头插入一个元素。ps:这是形成向后推的效果,如果之前队列已经满了,那么最后一个元素将被移出。" << endl;
C_usrdata data5 = {5, 5.55};
cb.push_front(data5);
DispCirBuff(cb);
// 预测:此时队列中的数据从前往后,应该是: data5 data2 data3 cout << "向队列尾插入一个元素,ps:这是形成向前推的效果, 如果之前队列已经满了,那么第一个元素将被移出。" << endl;
C_usrdata data6 = {6, 6.66};
cb.push_back(data6);
DispCirBuff(cb);
// 预测:此时队列中的数据从前往后,应该是: data2 data3 data6 cout << "移除缓冲区中的最后一位元素" << endl;
cb.pop_back();
DispCirBuff(cb);
cout << cb.size() << endl << endl;
// 预测:此时队列中的数据从前往后,应该是: data2 data3 cout << "移除缓冲区中的第一位元素" << endl << endl;
cb.pop_front();
DispCirBuff(cb);
cout << cb.size() << endl << endl;
// 预测:此时队列中的数据从前往后,应该是: data2 return 0;
}

makefile:

.PHONY: DOIT

DOIT:
mips-linux-gnu-g++ -I. my_boost_test.cpp -L./lib -lboost_thread -lboost_system -o boost_app -lrt -lpthread

实测, 实验现象 , 全部预测正确。

.

BOOST 环形队列circular_buffer的更多相关文章

  1. 【转】C#环形队列

    概述 看了一个数据结构的教程,是用C++写的,可自己C#还是一个菜鸟,更别说C++了,但还是大胆尝试用C#将其中的环形队列的实现写出来,先上代码: 1 public class MyQueue< ...

  2. Atitit.提升软件稳定性---基于数据库实现的持久化 循环队列 环形队列

    Atitit.提升软件稳定性---基于数据库实现的持久化  循环队列 环形队列 1. 前言::选型(马) 1 2. 实现java.util.queue接口 1 3. 当前指针的2个实现方式 1 1.1 ...

  3. 队列(Queue)--环形队列、优先队列和双向队列

    1. 队列概述 队列和堆栈都是有序列表,属于抽象型数据类型(ADT),所有加入和删除的动作都发生在不同的两端,并符合First In, First Out(先进先出)的特性. 特性: ·FIFO ·拥 ...

  4. 环形队列C++实现

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 以下鄙人用C++实现了环形队列 /******************************** ...

  5. C#实现环形队列

    概述 看了一个数据结构的教程,是用C++写的,可自己C#还是一个菜鸟,更别说C++了,但还是大胆尝试用C#将其中的环形队列的实现写出来,先上代码: public class MyQueue<T& ...

  6. 数据结构-环形队列 C和C++的实现

    队列: 含义:是一种先入先出(FIFO)的数据结构. 当我们把数据一个一个放入队列中.当我们需要用到这些数据时,每次都从队列的头部取出第一个数据进行处理.就像排队进场一样,先排队的人先进场. 结构如下 ...

  7. [LeetCode] Design Circular Queue 设计环形队列

    Design your implementation of the circular queue. The circular queue is a linear data structure in w ...

  8. ucos-iii串口用信号量及环形队列中断发送,用内建消息队列中断接收

    串口发送部分代码: //通过信号量的方法发送数据 void usart1SendData(CPU_INT08U ch) { OS_ERR err; CPU_INT08U isTheFirstCh; O ...

  9. 1-关于单片机通信数据传输(中断发送,大小端,IEEE754浮点型格式,共用体,空闲中断,环形队列)

    补充: 程序优化 为避免普通发送和中断发送造成冲突(造成死机,复位重启),printf修改为中断发送 写这篇文章的目的呢,如题目所言,我承认自己是一个程序猿.....应该说很多很多学单片机的对于... ...

  10. uvaoj 133 - The Dole Queue(逻辑,环形队列数数)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

随机推荐

  1. 三星app移植修复(app反编译修改)

    工具: apktool ADT 命令: 反编译 java -jar apktool.jar d test.apk 重打包 java -jar apktool.jar b test 签名使用ADT sm ...

  2. java实现二维码登录功能

    本文采用Springboot工程进行开发,使用Google的zxing生成二维码,直接放代码: <?xml version="1.0" encoding="UTF- ...

  3. [HTTP] HTTP 协议 Response Header 之 Content-Length、Transfer-Encoding与Content-Encoding

    0 引言 在近期项目一场景中,一 Web API (响应内容:7MB - 40MB.数据项:5W-20W条)的网络传输耗时较大,短则 5s,长则高达25s,前端渲染又需要耗时 9s-60s. 在这个场 ...

  4. Jmeter循环指定接口并接收不同参数值

    背景:在做接口自动化流程中我们会遇到需要提取上个接口的返回值作为下个接口的传参,在提取值数量不固定的情况下,如何在一个线程让指定接收参数的接口自动循环完所有的传参呢? 解决:添加[循环控制器]指定循环 ...

  5. 对比python学julia(第一章)--(第五节)八十天环游地球

    5.1.  问题描述 <八十天环游地球>是法国作家儒勒·凡尔纳创作的一部长篇小说,讲述了这样一个神奇的故事. 在1872年的伦敦,英国绅士福格跟俱乐部的朋友以巨资打赌他能在80天实现环游地 ...

  6. 【DataBase】MySQL 13 分组查询

    视频参考自:P59 - P68 https://www.bilibili.com/video/BV1xW411u7ax 分组查询 GROUP BY -- group by 子句 -- 要注意!grou ...

  7. 鹏城实验室——启智平台使用外部docker镜像 —— 实测并不可用,该功能可用性较低

    参考: https://bbs.openi.org.cn/forums/5492 需要注意,目前只有NVIDIA GPU运行环境下允许使用外部docker镜像. 注意: 对于该功能实测后发现可用性不高 ...

  8. "观察者" 网站上不错的对社会问题进行思考的文章--------------- 分享

    原文地址:      https://www.guancha.cn/weichengling 在网上无意中到了下面的文章,对社会热点问题有较为全面的思考,感觉不错,分享一下. ------------ ...

  9. 【转载】 arch linux下nvidia 驱动死机问题

    原文地址: https://my.oschina.net/u/947271/blog/288063 ================================================== ...

  10. window系统多用户登录软件——ASTER——终端共享器——网络终端机

    Windows系统除了Server版其他的都是单用户系统,但是其实Windows系统都是内置支持多用户的,只不过除了Server版本以外的系统版本都是将多用户登录功能屏蔽掉了,如果我们可以解除掉win ...