• 按照功能对Boost库进行分类


      Boost库共包含160余个库/组件,涵盖字符串与文本处理、容器、迭代器、算法、图像处理、模板元编程、并发编程等多个领域。C++支持面向过程、面向对象、泛型、模板元、函数式共五种主要的编程范式,研究Boost库源码对于学习C++很有帮助。下面主要按照功能对Boost库进行分类。

    一.字符串和文本处理库

    (1)Conversion库
    对C++类型转换的增强,提供更强的类型安全转换、更高效的类型安全保护、进行范围检查的数值转换和词法转换。
    (2)Format库
    实现类似printf的格式化对象,可以把参数格式化到一个字符串,而且是完全类型安全的。
    (3)IOStream库
    扩展C++标准库流处理,建立一个流处理框架。
    (4)Lexical Cast库
    用于字符串、整数、浮点数的字面转换。
    (5)Regex库
    正则表达式,已经被TR1所接受。
    (6)Spirit库
    基于EBNF范式的LL解析器框架。
    (7)String Algo库
    一组与字符串相关的算法。
    (8)Tokenizer库
    把字符串拆成一组记号的方法。
    (9)Wave库
    使用spirit库开发的一个完全符合C/C++标准的预处理器。
    (10)Xpressive库
    无需编译即可使用的正则表达式库。

    二.容器库

    (1)Array库
    对C语言风格的数组进行包装。
    (2)Bimap库
    双向映射结构库。
    (3)Circular Buffer库
    实现循环缓冲区的数据结构。
    (4)Disjoint Sets库
    实现不相交集的库。
    (5)Dynamic Bitset库
    支持运行时调整容器大小的位集合。
    (6)6.GIL库
    通用图像库。
    (7)Graph库
    处理图结构的库。
    (8)ICL库
    区间容器库,处理区间集合和映射。
    (9)Intrusive库
    侵入式容器和算法。
    (10)Multi-Array库
    多维容器。
    (11)Multi-Index库
    实现具有多个STL兼容索引的容器。
    (12)Pointer Container库
    容纳指针的容器。
    (13)Property Map库
    提供键/值映射的属性概念定义。
    (14)Property Tree库
    保存了多个属性值的树形数据结构。
    (15)Unordered库
    散列容器,相当于hash_xxx。
    (16)Variant库
    简单地说,就是持有string,vector等复杂类型的联合体。

    三.迭代器库

    (1)GIL库
    通用图像库。
    (2)Graph库
    处理图结构的库。
    (3)Iterators库
    为创建新的迭代器提供框架。
    (4)Operators库
    允许用户在自己的类里仅定义少量的操作符,就可方便地自动生成其他操作符重载,而且保证正确的语义实现。
    (5)Tokenizer库
    把字符串拆成一组记号的方法。

    四.算法库

    (1)Foreach库
    容器遍历算法。
    (2)GIL库
    通用图像库。
    (3)Graph库
    处理图结构的库。
    (4)Min-Max库
    可在同一次操作中同时得到最大值和最小值。
    (5)Range库
    一组关于范围的概念和实用程序。
    (6)String Algo库
    可在不使用正则表达式的情况下处理大多数字符串相关算法操作。
    (7)Utility库
    小工具的集合。

    五.函数对象和高阶编程库

    (1)Bind库
    绑定器的泛化,已被收入TR1。
    (2)Function库
    实现一个通用的回调机制,已被收入TR1。
    (3)Functional库
    适配器的增强版本。
    (4)Functional/Factory库
    用于实现静态和动态的工厂模式。
    (5)Functional/Forward库
    用于接受任何类型的参数。
    (6)Functional/Hash库
    实现了TR1中的散列函数。
    (7)Lambda库
    Lambda表达式,即未命名函数。
    (8)Member Function库
    是STL中mem_fun和mem_fun_ref的扩展。
    (9)Ref库
    包装了对一个对象的引用,已被收入TR1。
    (10)Result Of库
    用于确定一个调用表达式的返回类型,已被收入TR1。
    (11)Signals库
    实现线程安全的观察者模式。
    (l2)Signals2库
    基于Signal的另一种实现。
    (13)Utility库
    小工具的集合。
    (14)Phoenix库
    实现在C++中的函数式编程。

    六.泛型编程库

    (1)Call Traits库
    封装可能是最好的函数传参方式。
    (2)Concept Check库
    用来检查是否符合某个概念。
    (3)Enable If库
    允许模板函数或模板类在偏特化时仅针对某些特定类型有效。
    (4)Function Types库
    提供对函数、函数指针、函数引用和成员指针等类型进行分类分解和合成的功能。
    (5)GIL库
    通用图像库。
    (6)In Place Factory, Typed In Place Factory库
    工厂模式的一种实现。
    (7)Operators库
    允许用户在自己的类里仅定义少量的操作符,就可方便地自动生成其他操作符重载,而且保证正确的语义实现。
    (8)Property Map库
    提供键值映射的属性概念定义。
    (9)Static Assert库
    把断言的诊断时刻由运行期提前到编译期,让编译器检查可能发生的错误。
    (10)Type Traits库
    在编译时确定类型是否具有某些特征。
    (11)TTI库
    实现类型萃取的反射功能。

    七.模板元编程

    (1)Fusion库
    提供基于tuple的编译期容器和算法。
    (2)MPL库
    模板元编程框架。
    (3)Proto库
    构建专用领域嵌入式语言。
    (4)Static Assert库
    把断言的诊断时刻由运行期提前到编译期,让编译器检查可能发生的错误。
    (5)Type Traits库
    在编译时确定类型是否具有某些特征。

    八.预处理元编程库

    (1)Preprocessors库
    提供预处理元编程工具。

    九.并发编程库

    (1)Asio库
    基于操作系统提供的异步机制,采用前摄设计模式实现了可移植的异步IO操作。
    (2)Interprocess库
    实现了可移植的进程间通信功能,包括共享内存、内存映射文件、信号量、文件锁、消息队列等。
    (3)MPI库
    用于高性能的分布式并行开发。
    (4)Thread库
    为C++增加线程处理能力,支持Windows和POSIX线程。
    (5)Context库
    提供了在单个线程上的协同式多任务处理的支持。该库可以用于实现用户级的多任务处理的机制,比如说协程coroutines,用户级协作线程或者类似于C#语言中yield关键字的实现。
    (6)Atomic库
    实现C++11样式的atomic,提供原子数据类型的支持和对这些原子类型的原子操作的支持。
    (7)Coroutine库
    实现对协程的支持。协程与线程的不同之处在于,协程是基于合作式多任务的,而多线程是基于抢先式多任务的。
    (8)Lockfree库
    提供对无锁数据结构的支持。

    十.数学和数字库

    (1)Accumulators库
    用于增量计算的累加器的框架。
    (2)Integer库
    提供一组有关整数处理的类。
    (3)Interval库
    处理区间概念的数学问题。
    (4)Math库
    数学领域的模板类和算法。
    (5)Math Common Factor库
    用于支持最大公约数和最小公倍数。
    (6)Math Octonion库
    用于支持八元数。
    (7)Math Quaternion库
    用于支持四元数。
    (8)Math/Special Functions库
    数学上一些常用的函数。
    (9)Math/Statistical Distributions库
    用于单变量统计分布操作。
    (10)Multi-Array库
    多维容器。
    (11)Numeric Conversion库
    用于安全数字转换的一组函数。
    (12)Operators库
    允许用户在自己的类里仅定义少量的操作符,就可方便地自动生成其他操作符重载,而且保证正确的语义实现。
    (13)Random库
    专注于伪随机数的实现,有多种算法可以产生高质量的伪随机数。
    (14)Rational库
    实现了没有精度损失的有理数。
    (15)uBLAS库
    用于线性代数领域的数学库。
    (16)Geometry库
    用于解决几何问题的概念、原语和算法。
    (17)Ratio库
    根据C++ 0x标准N2661号建议,实现编译期的分数操作。
    (18)Multiprecision库
    提供比C++内置的整数、分数和浮点数精度更高的多精度数值运算功能。
    (19)Odeint库
    用于求解常微分方程的初值问题。

    十一.排错和测试库

    (1)Concept Check库
    用来检查是否符合某个概念。
    (2)Static Assert库
    把断言的诊断时刻由运行期提前到编译期,让编译器检查可能发生的错误。
    (3)Test库
    提供了一个用于单元测试的基于命令行界面的测试套件。

    十二.数据结构库

    (1)Any库
    支持对任意类型的值进行类型安全的存取。
    (2)Bimap库
    双向映射结构库。
    (3)Compressed Pair库
    优化的对pair对象的存储。
    (4)Fusion库
    提供基于tuple的编译期容器和算法。
    (5)ICL库
    区间容器库,处理区间集合和映射。
    (6)Multi-Index库
    为底层的容器提供多个索引。
    (7)Pointer Container库
    容纳指针的容器。
    (8)Property Tree库
    保存了多个属性值的树形数据结构。
    (9)Tuple库
    元组,已被TR1接受。
    (10)Uuid库
    用于表示和生成UUID。
    (11)Variant库
    有类别的泛型联合类。
    (12)Heap库
    对std::priority_queue扩展,实现优先级队列。
    (13)Type Erasure
    实现运行时的多态。

    十三.图像处理库

    (1)GIL库
    通用图像库。

    十四.输入输出库

    (1)Assign库
    用简洁的语法实现对STL容器赋值或者初始化。
    (2)Format库
    实现类似printf的格式化对象,可以把参数格式化到一个字符串,而且是完全类型安全的。
    (3)IO State Savers库
    用来保存流的当前状态,自动恢复流的状态等。
    (4)IOStreams库
    扩展C++标准库流处理,建立一个流处理框架。
    (5)Program Options库
    提供强大的命令行参数处理功能。
    (6)Serialization库
    实现C++数据结构的持久化。

    十五.跨语言混合编程库

    (1)Python库
    用于实现Python和C++对象的无缝接口和混合编程。

    十六.内存管理库

    (1)Pool库
    基于简单分隔存储思想实现了一个快速、紧凑的内存池库。
    (2)Smart Ptr库
    智能指针。
    (3)Utility库
    小工具的集合。

    十七.解析库

    (1)Spirit库
    基于EBNF范式的LL解析器框架。

    十八.编程接口库

    (1)Function库
    实现一个通用的回调机制,已被收入TR1。
    (2)Parameter库
    提供使用参数名来指定函数参数的机制。

    十九.综合类库

    (1)Compressed Pair库
    优化的对pair对象的存储。
    (2)CRC库
    实现了循环冗余校验码功能。
    (3)Date Time库
    一个非常全面灵活的日期时间库。
    (4)Exception库
    针对标准库中异常类的缺陷进行强化,提供。
    (5)Filesystem库
    可移植的文件系统操作库,可以跨平台操作目录、文件,已被TR2接受。
    (6)Flyweight库
    实现享元模式,享元对象不可修改,只能赋值。
    (7)Lexical Cast库
    用于字符串、整数、浮点数的字面转换。
    (8)Meta State Machine库
    用于表示UML2有限状态机的库。
    (9)Numeric Conversion库
    用于安全数字转换的一组函数。
    (10)Optional库
    使用容器的语义,包装了可能产生无效值的对象,实现了未初始化的概念。
    (11)Polygon库
    处理平面多边形的一些算法。
    (12)Program Options库
    提供强大的命令行参数处理功能。
    (13)Scope Exit库
    使用preprocessor库的预处理技术实现在退出作用域时资源自动释放。
    (14)Statechart库
    提供有限自动状态机框架。
    (15)Swap库
    为交换两个变量的值提供便捷方法。
    (16)System库
    使用轻量级的对象封装操作系统底层的错误代码和错误信息,已被TR2接受。
    (17)Timer库
    提供简易的度量时间和进度显示功能,可以用于性能测试等需要计时的任务。
    (18)Tribool库
    三态布尔逻辑值,在true和false之外引入indeterminate不确定状态。
    (19)Typeof库
    模拟C++0x新增加的typeof和auto关键字,以减轻变量类型声明的工作,简化代码。
    (20)Units库
    实现了物理学的量纲处理。
    (21)Utility库
    小工具集合。
    (22)Value Initialized库
    用于保证变量在声明时被正确初始化。
    (23)Chrono库
    实现了C++ 0x标准中N2661号建议所支持的时间功能。
    (24)Log库
    实现日志功能。
    (25)Predef库
    提供一批统一兼容探测其他宏的预定义宏。

    二十.编译器问题的变通方案库

    (1)Compatibility库
    为不符合标准库要求的环境提供帮助。
    (2)Config库
    将程序的编译配置分解为三个部分:平台、编译器和标准库,帮助库开发者解决特定平台特定编译器的兼容问题。

    二十一.常用库

    (1)Regex
    正则表达式库。
    (2)Spirit
    LL parser framework,用C++代码直接表达EBNF。
    (3)Graph
    图组件和算法。
    (4)Lambda
    在调用的地方定义短小匿名的函数对象,很实用的functional功能。
    (5)concept check
    检查泛型编程中的concept。
    (6)Mpl
    用模板实现的元编程框架。
    (7)Thread
    可移植的C++多线程库。
    (8)Python
    把C++类和函数映射到Python之中。
    (9)Pool
    内存池管理。
    (10)smart_ptr
    5个智能指针,学习智能指针必读。

    参考文献:
    [1]boost(C++程序库的总称):https://baike.baidu.com/item/boost/69144?fr=aladdin

    人工智能干货推荐 左边的图片1 专注于人工智能领域的技术分享

    游戏元宇宙 右边的图片 专注于游戏领域的技术分享

    本文由 mdnice 多平台发布

  • 相关阅读:
    打造顶尖微服务项目!解锁四种持久化工具的酸爽奇迹!
    【哈希槽算法】概念、对比、优点、举例理解_Redis07
    LabVIEW中通过编程获取前面板的屏幕截图
    idea 插件开发记录
    【接口测试系列】- 前端交互测试和后端逻辑测试
    基于粒子群算法优化的lssvm回归预测-附代码
    项目完成小结 - Django-React-Docker-Swag部署配置
    硬件学习路线调研
    Spring实例化Bean的三种方式及其优缺点
    Linux eval命令——关于空格那些事
  • 原文地址:https://blog.csdn.net/shengshengwang/article/details/125563934