C++ Boost库:环形缓冲区 circular_buffer

C++ Boost库:简介和第一个示例程序
C++ Boost库:数值转换 lexical_cast
C++ Boost库:字符串格式化 format
C++ Boost库:字符串string_algo
C++ Boost库:字符串算法string_algo
C++ Boost库:类型推导BOOST_AUTO/BOOST_TYPEOF
C++ Boost库:分词处理库 tokenizer
C++ Boost库:windows下编译Boost库
C++ Boost库:日期时间库 date_time
C++ Boost库:智能指针scoped_ptr
C++ Boost库:数组智能指针 scoped_array
C++ Boost库:共享所有权的智能指针 shared_ptr
C++ Boost库:工厂函数 make_shared
C++ Boost库:共享有权的数组智能指针shared_array
C++ Boost库:弱引用智能指针 weak_ptr
C++ Boost库:禁止拷贝 nocopyable
C++ Boost库:计时器 timer
C++ Boost库:普通数组array
C++ Boost库:散列容器 unordered_set、unordered_multiset
C++ Boost库:散列容器 unordered_map、unordered_multimap
C++ Boost库:双向映射容器 bimap
C++ Boost库:环形缓冲区 circular_buffer
C++ Boost库:动态多维数组 multi_array
C++ Boost库:使用property_tree解析XML和JSON
C++ Boost库:简化循环 BOOST_FOREACH
C++ Boost库:随机数库 Random
C++ Boost库:引用库 ref
C++ Boost库:绑定库 bind
C++ Boost库:线程库 thread 跨平台多线程
C++ Boost库:互斥量 mutex

1. 简介

boost库中的 circular_buffer顾名思义是一个循环缓冲器,其 capcity是固定的当容量满了以后,插入一个元素时,会在容器的开头或结尾处删除一个元素。

使用需要包含头文件:

#include<boost/circular_buffer.hpp> 

2. 使用示例

#include<iostream>
using namespace std;

#include<boost/circular_buffer.hpp> 
#include<boost/timer/timer.hpp>
using namespace  boost;
using namespace  boost::timer;

int main()
{
   //环形缓存(特别像队列)
   circular_buffer<int>  cb(3);//容量为3

    cb.push_back(1);//从尾部插入
    cb.push_back(2);//
    cb.push_back(3);//容量已满

    //cb.push_front(1);//从头插入
    //cb.push_front(2);//
    //cb.push_front(3);//容量已满

   for (int i = 0; i < cb.size(); ++i) 	cout << cb[i] << "   ";
   cout << endl;


   //容量已满,尾部插入,踢出头部元素
   cb.push_back(4);
   for (int i = 0; i < cb.size(); ++i) 	cout << cb[i] << "   ";
   cout << endl;

   //容量已满,头部插入,踢出尾部元素
   cb.push_front(5);
   for (int i = 0; i < cb.size(); ++i) 	cout << cb[i] << "   ";
   cout << endl;

   cb.pop_back();//删除尾部的元素
   for (int i = 0; i < cb.size(); ++i) 	cout << cb[i] << "   ";
   cout << endl;

   cb.pop_front();//删除头部的元素
   for (int i = 0; i < cb.size(); ++i) 	cout << cb[i] << "   ";
   cout << endl;

   getchar();
   return 0;
}

运行结果:

image-20210504164912726

boost::asio::high_resolution_timer是一个定时器类,用于在boost::asio中进行高分辨率的定时操作。 boost::asio是一个用于网络和异步编程的C++。它提供了丰富的功能,包括异步IO操作、定时器、socket通信等。其中,boost::asio::high_resolution_timer是其中的一个定时器类,它使用了高分辨率的时钟来进行精确的定时操作。 使用boost::asio::high_resolution_timer,我们可以创建一个定时器对象,并设置定时的时间间隔。可以使用成员函数expires_from_now()指定定时的时间间隔,参数为一个duration类型的对象,表示时间间隔的长度。 例如,以下代码创建了一个定时器对象timer,设置了定时时间间隔为1秒: boost::asio::high_resolution_timer timer(io_context); timer.expires_from_now(boost::posix_time::seconds(1)); 然后,我们可以调用定时器对象的async_wait()函数来启动定时器,并指定一个回调函数,在定时器超时时被调用。回调函数可以是一个lambda函数,也可以是一个函数对象。 例如,以下代码定义了一个lambda函数作为回调函数: timer.async_wait([](const boost::system::error_code& ec) { if (!ec) { // 定时器超时,执行相应操作 } }); 在定时器超时时,回调函数会被触发,并执行相应操作。 总之,boost::asio::high_resolution_timer是一个用于高分辨率定时操作的定时器类,可以帮助我们在异步编程中进行精确的定时操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级D洋葱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值