boost
文章平均质量分 94
烫青菜
如果世界漆黑,其实我很美
展开
-
boost I 并发与线程(三)asio
Asio的全称为Asynchronous input and output(异步输入输出)的缩写 asio不仅仅是一个网络库 :封装了socketAPI 实际上asio是一个事件框架,并且 可扩展性很强,比如可扩展模拟actor模型, pipeline模型,支持future, 各种静多态支持,异步串口通信,支持自定义部分调度器功能,有栈/无栈 协程支持等一堆东西。 handler回调 函数,三种格式 io_service...原创 2021-12-30 18:26:01 · 1913 阅读 · 1 评论 -
boost | 线程与并发(二)thread
目录一、Mutex互斥量1.成员函数2.扩展(包装mutex)(1)lock_guard(2)unique_lock3.自定义互斥量二、thread线程对象1.创建线程对象2.等待线程3.分离线程4.线程辅助类thread_guard(包装thread)5.RAII线程类scoped_thread6.中断线程7.线程组8.call_once9.线程结束时执行操作三、条件变量四、异步操作线程返回值获取1.future2.asyn.原创 2021-12-19 19:02:37 · 1179 阅读 · 0 评论 -
boost | 线程与并发(一)atomic
一、并发与并行并发:一个处理器上跑一个进程(多个线程),轮流启用时间片。并行:多个处理器同时各跑一个线程/进程。生动讲解可看当我们在说“并发、多线程”,说的是什么? - 知乎 (zhihu.com)二、原子操作所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但...原创 2021-12-17 18:55:02 · 1370 阅读 · 0 评论 -
boost | 函数与回调(三)signals2
目录一、signal类二、基本用法1.成员函数2.返回值3.使用组号4.合并器(1)使用signal默认构造函数(2)实例化合并器5.管理信号连接(1)使用connection对象管理信号连接(2)使用scope_connection对象管理信号连接(3)使⽤slot类自动管理连接三、线程安全四、与function对比在signals2库中,观察者模式被称为信号/插槽(signals/slots)机制,它是⼀种函数回调机制,⼀个信号...原创 2021-12-17 14:29:33 · 2024 阅读 · 0 评论 -
boost | 函数与回调(二)function
目录一、简单使用1.存储普通函数2.存储成员函数二、与bind/lambda结合使用1.与bind结合使用(1)存储普通函数(2) 存储成员函数2.与lambda结合使用三、结合ref库使用1.不使用ref库存储函数对象2.使用ref库存储函数对象四、function用于回调1.回调函数是普通函数2.回调函数是静态成员函数3.回调函数是普通成员函数4.回调函数是函数对象五、与auto对比六、与C++标准库对比fun...原创 2021-12-13 19:10:43 · 1129 阅读 · 0 评论 -
boost | 函数与回调(一)ref与bind
目录一、ref(已入C++标准)1.包装器reference_wrapper2.工厂函数3.操作包装4.与C++标准库对比二、bind(已入C++标准)1.基本形式2.占位符3.操作普通函数(自由函数)4.操作成员函数5.操作成员变量6.操作函数对象7.与C++标准库对比8.扩展(1)存储bind表达式(2)使⽤ref库(3)绑定重载函数一、ref(已入C++标准)C++标准库和Boost中的算法⼤量使⽤了函数对...原创 2021-12-10 20:44:16 · 784 阅读 · 0 评论 -
boost I 操作系统相关的库(三)- program_options系统
目录一、基本流程二、组件介绍1.选项描述器(1)value_semantic选项值(2)option_description(3)options_description2.分析器(1)parse_command_line(2)parse_config_file(3)parse_environment3.存储器三、扩展1.位置选项值2.未知选项3.命令行风格program_options 库提供了从外界获取程序选项的能力。程序的选...原创 2021-12-08 16:51:59 · 2155 阅读 · 0 评论 -
boost I 操作系统相关的库(二)- filesystem系统
目录一、path1.path构造2.追加路径3.获取完整绝对路径4.文件名可移植性判断5.路径分析6.路径修改7.异常处理二、文件1.文件状态类file_status2.文件属性3.文件操作三、目录迭代1.单层遍历2.递归实现深度遍历3.recursive_directory_iterator四、文件流操作filesystem库是一个可移植的文件系统操作库,已被收入 C ++17 标准。它在底层做了大量的工作,使用POS...原创 2021-12-01 16:08:44 · 2214 阅读 · 1 评论 -
boost I 操作系统相关的库(一)
目录一、boost.system(一)错误值枚举(二)错误类别 error_category(三)错误代码error_code和 error_condition(四)错误异常二、boost.chrono(一)时间长度 duration1.duration模板参数2.chrono库预定义的时间单位3.duration的运算4.duration时间类型转换(二)时钟clock(三)时间点time_point三、boost.cpu_timer1....原创 2021-11-28 11:32:50 · 971 阅读 · 0 评论 -
boost I 数学领域常用的六个库
目录一、math.constants 数学常量二、integer 编译期整数相关计算(一)integer_traits(二)整数类型定义1.cstdint.hpp 使用typedef提供一系列整数类型定义2.integer.hpp使用模板类提供一系列整数类型定义三、rational 分数(一)创建与赋值(二)访问分子分母(三)类型转换1.转bool2.转整数/浮点数(四) 其他运算1.取绝对值2.最大公约数、最小公倍数四、ratio编译期分..原创 2021-11-26 18:29:22 · 2204 阅读 · 1 评论 -
boost I 常用算法组件
目录一、foreach二、minmax(一)boost.minmax1.std::min与std::max2.boost::minmax3.std::minmax(推荐)(二)boost.minmax_element1.std::min_element与std::max_element2.std::minmax_element3.boost::minmax_element4.boost.xxx_[min|max]_yyy[min|max]_element三、.原创 2021-11-21 13:57:12 · 846 阅读 · 0 评论 -
boost I 容器与数据结构(五)
目录十、property_tree(一)处理xml1.写xml、修改xml2.解析xml3.get()通过路径访问节点4.get_child()获得含有多个子节点的节点对象5.find()浅查找6.get_optional()7.获得注释及属性值(二)处理Json(三)处理ini(四)处理info十、property_treeproperty_tree 是一个保存了多个属性值的树形数据结构,它可以用类似路径的简单方式访问任意节点的属性,...原创 2021-11-20 12:27:27 · 1053 阅读 · 0 评论 -
boost I 容器与数据结构(四)
目录八、Variant1.union2.variant(1)初始化(2)访问元素(3)元素比较(4)访问器3.variant与any比较4.boost::variant与std::variant比较九、multi_array1.初始化2.遍历元素3.访问某个元素4.改变形状和大小5.创建子视图6.适配普通数组7.设置、修改索引基数8.禁用全局对象八、Variantvariant与 any 有些类似,它是一种可变类...原创 2021-11-19 17:36:41 · 1429 阅读 · 0 评论 -
boost I 容器与数据结构(三)
目录六、tuple1.std::pair2.创建tuple对象3.访问元素4.比较操作5.输入输出6.联结变量7.扩展a.使用get_head 和get_tail遍历b.tuples::elementc.tuples::lengthd.与C++标准库std::tuple的对比七、any1.访问元素2.any的应用3.与C++标准库对比六、tupletuple ( 元组)定义了一个有固定数目元素的容器,其中的每个元素类型...原创 2021-11-13 15:16:11 · 1528 阅读 · 0 评论 -
boost I 容器与数据结构(二)
目录四、bimap(双向映射)1.集合类型2.元素插入a.使用左右视图插入b.使用value_type和relation插入c.使用left_value_type、right_value_type,速度快3.查找替换a.查找 findb.替换replace、modify4.投射5.使用标签类型四、bimap(双向映射)C ++ 标准提供了映射型容器 map 和 multi_map ,它们相当于关联数组,把一个元素(key)映射到另一个元素...原创 2021-11-07 12:06:56 · 535 阅读 · 0 评论 -
boost I 容器与数据结构(一)
容器是 C++标准库中最引人注意的部分,C++98提供了动态数组vector、双端队列deque、双向链表list 、集合set和映射map5 种数据结构,而 C++11又新增了array、forward_list和unordered 容器。它们均以泛型的形式提供,可以容纳任意类型的元素,极大地方便了C ++ 程序员的工作。Boost程序库基于与 C ++ 标准相同的设计理念,实现了数个新型容器 ( 数据结构 ) :array、dynamic_bitset、unorder...原创 2021-11-06 11:47:07 · 453 阅读 · 0 评论 -
boost I 测试库
C/C++提供的assert宏只支持有限的正确性验证,所以boost在这方面进行了改进: boost.assert 库增强了原始的运行时的 assert 宏, static_assert 库提供了静态断言(编译期诊断),而lightweight_test 和 test 库则构建了完整的单元测试框架。一、assertboost.assert提供了BOOST_ASSERT和BOOST_ASSERT_MSG两种形式,BOOST_ASSERT等同于C/C++提供的assert...原创 2021-11-03 20:48:35 · 624 阅读 · 0 评论 -
boost I 字符串与文本处理
一、lexical_castlexical_cast库可以进行字符串与整数\浮点数之间的互相转换。lexical_cast的标准形式有两个模板参数template <typename Target, typename Source>,Target需要我们手动指定,是转换后的目标类型,通常是数字类型或 std:: string;而第二个参数Source则不必写出,因为它可以由函数参数推导出来。字符串转数字时,字符串中只能有数字和小数点...原创 2021-10-30 12:52:53 · 644 阅读 · 0 评论 -
C++ | 解决x86版本 LNK1104 无法打开文件“libboost_random-vc140-mt-1_61.lib”等一系列问题
在编译C++ x86版本的SDK时,报了这个错:LNK1104 无法打开文件“libboost_random-vc140-mt-1_61.lib”,我编译了一圈x86 的boost库,发现貌似需要使用VS2015来编译,这样编译出来的boost库才是vc140,我用VS2017编译出来的都是vc141,那我需要安装VS2015呢?需要这么麻烦吗?并不需要!附一张VS2017编译的boost库:(我现在猜想改一下名字或许也可以用,但是没试过)解决办法:1.下载已经编译好的库boost_1_67原创 2020-11-12 14:47:20 · 908 阅读 · 0 评论 -
C++ I Boost 库之小工具
一、noncopyable在 C++ 中定义一个类时,如果不明确定义拷贝构造函数和拷贝赋值操作符,编译器会为我们自动生成这两个函数。class ToolsStudy{};当我们定义了一个ToolsStudy的空类,编译器在处理它时会“默默地”为它增加拷贝构造函数和拷贝赋值操作符,真实代码类似于: class ToolsStudy{public: ToolsStudy(const ToolsStudy &) { //... ...原创 2021-10-14 20:20:27 · 727 阅读 · 1 评论 -
C++ | boost 库之内存池
内存池是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是,使得内存分配效率得到提升。boost.pool 库基于简单分隔存储的思想实现了一个快速、紧凑的内存池库,不仅能够管理大量的对象,还可以用作 STL 的内存分配器。在某种程度上讲,它近似于一个小型的垃圾回收机制,在需要大量分配/释放小对象时其效率很高,而且完全不需要考虑 delet...原创 2021-09-29 20:22:43 · 1551 阅读 · 0 评论 -
C++ | boost库之智能指针
一、RAII机制RAII机制在之前的文章中有讲解,具体可以查看C++ 内存管理这篇文章。二、智能指针向 C ++ 引入异常机制后,智能指针由一种技巧升级为一种非常重要的技术,因为如果没有智能指针,程序员必须保证 new 对象能在正确的时机 delete ,必须到处编写异常捕获代码以释放资源,而智能指针则可以在退出作用域时(无论是因正常流程离开还是因异常离开)总调用 delete 来析构在堆上动态分配的对象。1.C++98下auto_ptra...原创 2021-09-24 20:26:13 · 1006 阅读 · 2 评论 -
C++ | boost库之时间与日期
目录一、timer库1.timer (V1)(不推荐使用)(1) timer(2) progress_timer2.cpu_timer(V2)二、date_time库1.处理日期的gregorian(1)创建日期对象(2)判断日期是否为特殊日期(3)访问日期(4)日期的输出(5)boost::gregorian::date与C语音的tm互转(6)时间长度(7)日期区间(8)日期迭代器(9)其他常用函数2.处理时间的posix_time一原创 2021-09-17 16:25:06 · 2456 阅读 · 0 评论 -
C++ | boost库入门
一、boost库简介Boost是一个功能强大 , 构造精良 , 跨越平台 , 代码开源 , 完全免费的 C ++ 程序库。功能强大共包含 160 余个库 / 组件 , 涵盖字符串与文本处理、容器、迭代器、算法、图像处理、模板元编程、并发编程等多个领域。构造精良由 c ++ 标准委员会成员发起倡议并建立 boost 社区 , C ++11 标准库中三分之二来自 boost , 并且将来还会有更多的库进入 c ++ 标准库 , 因此 boos...原创 2021-09-15 17:53:07 · 20119 阅读 · 6 评论