Boost库
boost库的使用
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
小米的修行之路
是日已过,命亦随减;如少水鱼,斯有何乐?当勤精进,如救头燃!但念无常,慎勿放逸。
展开
-
boost库随机数使用详解
1、随机数发生器:产生随机数。boost提供了30多个随机数发生器,比较常用的:rand48、mt19937、lagged_fibonacci19937,示例中使用mt19937随机数发生器;2、随机数分布器:用来和随机数发生器相配合,产生符合某个特定的区域或符合某种分布的随机数。比如产生0~100之间的随机数等等。3、上面说的几个产生的都是伪随机数,并不是真正的随机数,而是在一个非常大的...原创 2020-03-29 17:50:45 · 4438 阅读 · 0 评论 -
boost摘要算法
1、加密过程不需要密匙,并且经过加密的数据无法被解密;2、相同的明文数据经过相同的消息摘要算法得到的是相同的密文;3、无论输入的消息有多长,计算出来的消息摘要的长度总是固定的;4、应用领域:防信息篡改、身份鉴定等;5、主要摘要算法:MD系列、SHA系列等等。6、boost库中的SHA1摘要算法:如何得到消息的摘要;如何将得到摘要转换为字符串。示例:#include <...原创 2020-03-29 11:23:41 · 447 阅读 · 0 评论 -
boost生成UUID
1、UUID也就是全球唯一标识符。2、如何得到一个UUID,如何使用得到的UUID,示例如下:#include <iostream>#include <boost/lexical_cast.hpp>#include <boost/uuid/uuid.hpp>#include <boost/uuid/uuid_generators.hpp&g...原创 2020-03-28 22:30:41 · 4172 阅读 · 0 评论 -
boost::singleton_pool使用
1、与pool接口完全一致,可为简单的POD数据类型分配 内存指针;2、它是一个单件,与整个程序的生命周期一样长;3、singleton_pool是线程安全的。4、主要接口:5、简单示例:#include <iostream>#include <boost/thread.hpp>#include <boost/chrono.hpp&...原创 2020-03-27 09:47:10 · 1358 阅读 · 0 评论 -
boost::object_pool使用
1、boost::object_pool是用于类实例的内存池,析构时对所有已经分配的内存块调用析构函数。2、常用函数construct从内存池中创建一块对象内存,最多支持三个参数;destroy()用来销毁对象。3、函数调用失败不会抛出异常,会返回空指针,所以我们可以使用空指针进行判断是否成功。4、示例:#include <iostream>#include <...原创 2020-03-26 21:26:54 · 1605 阅读 · 0 评论 -
boost::pool内存池使用
1、boost::pool只能作为普通数据类型的内存池,如int、double等,因为他只分配内存,不调用构造函数。2、如果内存分配失败,不抛异常,我们应该判断返回的指针是不是nullptr,防止空指针错误。3、我们一般不应该手工调用free()等释放内存的函数,应该交给内存池自动进行管理。如果你确定内存池 的空间不够,这是你可以调用malloc()对应的free()函数,释放一些已经分配...原创 2020-03-26 11:44:25 · 1089 阅读 · 0 评论 -
boost/property_tree/ptree读取ini配置文件
1、测试的ini文件:[SYSTEM]CamNum=2PicPath=D:\data......[Cam1]......[Cam2]......2、示例:#include <iostream>#include <boost/property_tree/ptree.hpp>#include <boost/property_tree/i...原创 2020-03-25 16:39:51 · 810 阅读 · 0 评论 -
boost遍历查找文件
示例:#include <iostream>#include <boost/filesystem.hpp>#include <boost/optional.hpp>#include <boost/xpressive/xpressive_dynamic.hpp>//使用正则表达式进行模糊文件查找std::vector<boost...原创 2020-03-24 14:35:06 · 859 阅读 · 0 评论 -
boost::filesystem文件相关操作
1、主要有:判断文件状态、获取文件属性、文件的基本操作2、每个函数都有两种类型:(1)、抛出异常;(2)、返回错误码;3、详细操作示例:#include <iostream>#include <fstream>#include <boost/filesystem.hpp>#include <boost/filesystem/fs...原创 2020-03-23 23:15:03 · 1154 阅读 · 0 评论 -
boost::filesystem::path路径信息相关操作
1、主要内容:路径信息的构造、路径信息的拆分、路径信息的修改。2、示例:#include <iostream>#include <boost/filesystem.hpp>int main(){ //路径信息:boost::filesystem::path //构造函数:不验证路径的有效性、不判断文件或目录是否存在 boost::filesystem...原创 2020-03-23 14:57:19 · 1333 阅读 · 0 评论 -
boost正则表达式
1、语法:(1)、点号 . 可以匹配任意的单个字符,是单字符的通配符;(2)、^匹配行的开头;(3)、$匹配行的末尾;(4)、小括号()用于定义一个正则表达式的子表达式,匹配字符串的子串;(5)、*表示前面的元素可以重复任意多次(n >= 0);(6)、+表示前面的元素可以重复一次或多次(n > 0);(7)、{}可以手工指定重复元素的次数:{n}重复n次,...原创 2020-03-21 16:02:38 · 642 阅读 · 0 评论 -
boost::string_algo库详解
1、boost::string_algo是一个字符串算法库,为std::string字符串提供了大量实用的算法,比如:查找、分割、合并、替换、删除等等,是为string服务的。2、string_algo库中的算法函数命名规则如下:(1)、带有前缀i的函数:表明此算法对字符串的大小写不敏感,否则算法对字符串的大小写敏感;(2)、带有后缀_copy的函数:表明处理结束后,原字符串不变,返回...原创 2020-03-20 21:27:28 · 560 阅读 · 0 评论 -
boost::string_ref使用详解
1、string_ref不分配内存,不对字符串进行拷贝,通过其内部的两个成员变量ptr_和len_标记字符串的起始位置和字符串的长度,实现了字符串的表示,所以效率很高。2、一般情况下,我们使用string_ref只是去观察字符串,而不是去修改字符串。3、在使用string_ref期间,我们应该保证被引用的原始字符串对象可用,不能销毁。如果我们确实需要持有字符串,可以调用成员函数to_str...原创 2020-03-20 11:18:28 · 1637 阅读 · 0 评论 -
boost::format字符串的格式化操作
1、简单示例:#include <iostream>#include <boost/format.hpp>int main(){ //模仿经典的printf格式化 //%05d: 输出宽度为5的整数,不足用0填充 //%-8.3f: 输出左对齐,总宽度为8,小数位为3位的浮点数 //% 10s :输出10位的字符串,不足用空格填充 //%05X...原创 2020-03-19 22:37:19 · 483 阅读 · 0 评论 -
boost::lexical_cast数值转换
1、简单实用示例:#include <iostream>#include <boost/lexical_cast.hpp>template<typename T>class outable{ friend std::ostream& operator<<(std::ostream& os, const T& ...原创 2020-03-19 20:36:26 · 321 阅读 · 0 评论 -
boost::date_time中将英文月份输出为汉字
1、boost的date_time库中的月份默认都是用英文来表示的,如Mar是3月。。。,有时我们想输出如下格式的时间到文件中:2020-03-17 22:41:08 899412,下面给出格式化输出方法:#include <iostream> #include <boost/date_time/posix_time/posix_time.hpp>std::st...原创 2020-03-17 22:44:32 · 360 阅读 · 0 评论 -
Boost::date_time时间的处理
1、date_time库提供微秒级别时间处理.如果需要,如果在#include <boost/date_time/posix_time/posix_time.hpp>之前定义宏:BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG,则最高可达到纳秒级别的精确度。2、time_duration的子类:hours、minutes、seconds、millisec/...原创 2020-03-17 16:55:30 · 424 阅读 · 0 评论 -
Boost::date_time日期的操作
1、日期对象的创建:#include <iostream>#include <boost/date_time/gregorian/gregorian.hpp> //日期库int main(){ //创建一个日期对象 //默认构造函数创建一个无效日期 boost::gregorian::date d; std::cout << d <...原创 2020-03-17 12:38:38 · 323 阅读 · 0 评论 -
boost::circular_buffer缓行缓冲区
1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。3、主要接口:4、实现一个生产者---消费者模式示例:#inc...原创 2020-03-15 22:28:58 · 475 阅读 · 0 评论 -
boost::bimap使用详解
1、特点:(1)、双向映射容器,类似于map(单向映射容器),而又不同于map;(2)、bimap既可以通过key来进行搜索,有可以通过value来进行搜索;(3)、一个bimap相当于内部包含left和right两个map类型的容器;(4)、对于一个bimap<x,y>,其左视图bimap.left相当于map<x,y>,右视图bimap相当于map<...原创 2020-03-15 20:11:26 · 2103 阅读 · 0 评论 -
boost::unordered_map使用详解
1、特点:(1)、unordered_map中的元素是无序的,其插入位置由根据键计算出的Hash值决定;(2)、unordered_map中的元素键是不能相同的;(3)、使用[]插入时,如果键不存在,会直接插入,如果键已存在,会更改键所对应的值。使用()插入时,如果键不存在,会发出异常,如果键存在,会更改键对应的值;(4)、使用自定义的类型作为键,必须重写==操作符,同时必须自己实...原创 2020-03-15 17:20:35 · 2802 阅读 · 1 评论 -
boost::unordered_set使用详解
1、先说下STL::set的特点:set是以特点顺序存储相异元素的容器,所以:(1)、在set中插入或赋值时会自动排序;(2)、存储在set中的元素是不相同的;(3)、不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,再插入新元素;2、boost::unordered_set主要特点:(1)、无序,在插入或是赋值时不会自动排序;(2)、存储在u...原创 2020-03-15 00:45:46 · 2033 阅读 · 0 评论 -
boost::array常用操作
1、boost::array是一个跟 C++ 里传统的数组有着相同属性的容器;2、boost::array与stl::vector的区别是不会动态增长,是定长的,所以对于模拟静态数组的需求来说,boost::array有更好的效率;3、at和[]的主要区别是:at可以用try...catch方法, 获取抛出的异常,[]只会抛出assert错误。4、boost::array的常用使用接口...原创 2020-03-14 22:54:51 · 796 阅读 · 0 评论 -
boost---互斥量详解
1、互斥量用于线程同步,boost提供了多种互斥量,只对重要的几个进行说明:(1)、mutex:接口:boost库程序开发指南上说try_lock_for()等只属于timed_mutex互斥量,经过试验,mutex也满足这样的接口_(boost库版本:1.70.0)。也就是以上5个关于锁的接口,mutex都是满足的。简单测试代码:#include <iostream...原创 2020-03-14 16:10:47 · 450 阅读 · 0 评论 -
boost---condition_variable条件变量使用详解
1、条件变量是一种用于等待的同步机制,可以实现线程间通信,它必须与互斥量配合使用。2、boost::thread提供的两种条件变量对象:(1)、condition_variable;(2)、condition_variable_any。他们的区别是:(1)、condition_variable只能配合boost::mutex互斥量;(2)、condition_variable_any可以适应更...原创 2020-03-13 14:46:19 · 2465 阅读 · 0 评论 -
boost---atomic原子操作使用
1、boost提供了跨平台的原子操作功能,简化我们在并发环境中读写变量。下面的示例展示了最长用的原子操作。// ConcurrentProgram_Test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <boost/atomic.hpp>#include <...原创 2020-03-12 22:14:53 · 1644 阅读 · 0 评论 -
boost---多线程详解
boost的多线程和stl很类似,使用起来非常简单。1、boost::thread常用接口的使用:2、boost::thread多线程的辅助类:thread_guard、scoped_thread3、线程中断:我们可以:判断当前线程是否允许中断、关闭中断、临时恢复中断、检测当前线程是否要被中断、发出中断信号等操作。线程中断发生必须满足三个条件:(1)、...原创 2020-03-12 14:55:59 · 548 阅读 · 0 评论 -
boost---无锁队列(单生产者、单消费者)
1、函数接口使用说明:https://www.boost.org/doc/libs/1_70_0/doc/html/boost/lockfree/spsc_queue.html2、示例:#include <iostream>#include <mutex>#include <condition_variable>#include <boos...原创 2020-03-10 16:34:34 · 939 阅读 · 0 评论 -
boost---使用无锁队列(多生产者/多消费者)
一、构造一个无锁队列:boost::lockfree::queue:1、第一个参数标识队列中元素类型;2、第二个参数用来协助配置boost::lockfree::queue:(1)、boost::lockfree::fixed_sized是否为固定大小。默认是boost::lockfree::fixed_sized<false>,表示当你调用push时,如果此时已经没有空间...原创 2020-03-10 11:06:58 · 3327 阅读 · 0 评论 -
boost---signals2使用详解
1、signals2实现了线程安全的“观察者模式”,也称作:信号---插槽,他是一种函数的回调机制,当信号发出时,相应的槽函数会被调用,有点类似于QT中的信号槽。2、特点:(1)、一个信号可以与多个插槽函数绑定;(2)、一个信号与多个插槽函数绑定时,插槽函数可以设置自己被调用的顺序:boost::signals2::at_front、boost::signals2::at_back;...原创 2020-03-09 20:23:43 · 3160 阅读 · 0 评论 -
boost---计时器
一、1、boost不建议使用:#include <boost/timer.hpp> boost::timer2、缺点:(1)、计时精度低,最小毫秒;(2)、计时最大时间短,只偶遇596个小时左右。3、boost::progress_timer析构时自动输出计时时间。4、示例:// Timer_Test.cpp : 此文件包含 "main" 函数。程序...原创 2020-03-09 11:56:33 · 504 阅读 · 0 评论 -
boost---ptr_vector指针容器各种操作详解
1、类似容器:boost::ptr_vector,boost::ptr_deque,boost::ptr_list,boost::ptr_set,boost::ptr_map,boost::ptr_unordered_set,boost::ptr_unordered_map。2、主要说明boost::ptr_vector的用法,特点:(1)、boost::ptr_vector专...原创 2020-03-08 17:23:28 · 1432 阅读 · 0 评论 -
boost---介入式指针intrusive_ptr
1、特点:(1)、介入式指针的工作方式和共享指针完全一样,但对介入式指针来说,程序员就得自己来控制引用计数;(2)、boost::shared_ptr的一大陷阱是用一个raw pointer多次创建boost::shared_ptr,这将导致该raw pointer被多次销毁,但boost::intrusive_ptr可以利用raw pointer创建多个intrusive _ptr,示例...原创 2020-03-08 00:55:22 · 854 阅读 · 0 评论 -
boost---弱指针weak_ptr
1、特点:(1)、weak_ptr配合智能指针(shared_ptr)一起使用,通过boost::shared_ptr来初始化;(2)、weak_ptr不增加引用计数;(3)、lock()方法返回的boost::shared_ptr与用来初始化弱指针的【共享指针】共享所有权,如果这个【共享指针】不含有任何对象,返回的共享指针也将是空的,即返回的共享指针将被设置为0;(4)、e...原创 2020-03-07 23:44:01 · 458 阅读 · 0 评论 -
boost---共享数组
1、shared_array与shared_ptr很相似,只不过其实专门提供对数组的包装。但是经过测试,其实shared_ptr也可以提供对数组的包装,而且不复杂。2、特点:(1)、共享数组必须通过动态分配的数组的地址来初始化;(2)、共享数组的行为类似于共享指针,关键不同在于共享数组在析构时,默认使用delete[]操作符来释放所含的对象;(3)、提供operator[]操作...原创 2020-03-07 22:44:04 · 596 阅读 · 0 评论 -
boost---共享指针boost::shared_ptr
1、特点:(1)、boost::shared_ptr不独占一个对象,它可以和其他boost::shared_ptr类型的智能指针共享所有权;(2)、使用引用计数来管理,当引用对象的最后一个智能指针销毁后,对象才会被释放;(3)、boost::shared_ptr的构造函数的第二个参数是一个普通函数或者函数对象,该参数用来销毁所含的对象,默认是delete。(4)、随着bo...原创 2020-03-07 19:11:49 · 933 阅读 · 0 评论 -
boost---作用域数组
1、boost::scoped_array2、特点:(1):作用域数组必须通过动态分配的数组来初始化;(2):作用域数组的析构函数使用delete[]操作符来释放所包含的对象;(3):boost:scoped_array类重载了操作符operator[]();(4):boost:scoped_array也提供了get()和reset()方法,用来返回和重新初始...原创 2020-03-07 15:01:30 · 238 阅读 · 0 评论 -
boost---作用域指针
1、boost::scoped_ptr2、特点:(1):一个作用域指针独占一个动态分配的对象;(2):一个作用域指针不能传递它所包含的对象的所有权到另一个作用域指针;(3):一旦用一个地址来初始化,这个动态分配的对象将在析构阶段释放;(4):reset()方法用一个新的对象来重新初始化智能指针,在这种情况下,新创建的对象赋值之前会先自动释放所包含的对象。(5):boost...原创 2020-03-07 14:33:45 · 246 阅读 · 0 评论 -
boost---endpoint
什么是端口endpoint在进行网络通信时,需要知道三项:IP地址、通信协议、端口号,通信协议用来决定如何通信,IP地址和端口号用来进行确定目标,在Boost.Asio中提供了对应的模型来一并表示这三项内容,就是端口:ip::basic_endpoint包含了IP地址和端口号,并以通信协议类型为模板参数。可以直接使用的有:ip::tcp::endpoint ip::udp::endpoi...转载 2019-08-12 11:09:08 · 1560 阅读 · 0 评论 -
Windows7 + VS2017 + boost_1_70_0配置详解
1、下载boost_1_70_0.zip。下载地址:https://www.boost.org/users/history/version_1_70_0.html。2、将下载的安装包解压到指定的目录,我解压的目录为:D:\boost\boost_1_70_0。如下图:3、使用vs2017的命令行工具窗口进行编译:这里我们用《x64_x86交叉工具命令提示符 》工具。4、切换到目录...原创 2019-08-12 14:26:08 · 1050 阅读 · 0 评论