boost第三方库功能模块汇总_boost 有哪些模块-程序员宅基地

技术标签: 笔记  第三方库  boost  

按照实现的功能,Boost可为大致归入以下20个分类,在下面的分类中,有些库同时归入几种类别。

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

2.容器库
a) Array 库:对C语言风格的数组进行包装
b) Bimap 库:双向映射结构库
c) Circular Buffer 库:实现循环缓冲区的数据结构
d) Disjoint Sets库 :实现不相交集的库
e) Dynamic Bitset 库:支持运行时调整容器大小的位集合
f) GIL 库:通用图像库
g) Graph 库:处理图结构的库
h) ICL 库:区间容器库,处理区间集合和映射
i) Intrusive 库:侵入式容器和算法
j) Multi-Array 库:多维容器
k) Multi-Index 库:实现具有多个STL兼容索引的容器
l) Pointer Container 库:容纳指针的容器
m) Property Map 库:提供键/值映射的属性概念定义
n) Property Tree 库:保存了多个属性值的树形数据结构
o) Unordered 库:散列容器,相当于hash_xxx
p) Variant 库:简单地说,就是持有string, vector等复杂类型的联合体

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

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

5.函数对象和高阶编程库
a) Bind库:绑定器的泛化,已被收入TR1
b) Function库:实现一个通用的回调机制,已被收入TR1
c) Functional库:适配器的增强版本
d) Functional/Factory库:用于实现静态和动态的工厂模式
e) Functional/Forward库:用于接受任何类型的参数
f) Functional/Hash库:实现了TR1中的散列函数
g) Lambda库:Lambda表达式,即未命名函数
h) Member Function库:是STL中mem_fun和mem_fun_ref的扩展
i) Ref库:包装了对一个对象的引用,已被收入TR1
j) Result Of库:用于确定一个调用表达式的返回类型,已被收入TR1
k) Signals库:实现线程安全的观察者模式
l) Signals2库:基于Signal的另一种实现
m) Utility库:小工具的集合
n) Phoenix库:实现在C++中的函数式编程。

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

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

8.预处理元编程库
a) Preprocessors库:提供预处理元编程工具

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

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

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

12.图像处理库
a) GIL库:通用图像库

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

14.跨语言混合编程库
a) Python库:用于实现Python和C++对象的无缝接口和混合编程

15.内存管理库
a) Pool库:基于简单分隔存储思想实现了一个快速、紧凑的内存池库
b) Smart Ptr库:智能指针
c) Utility库:小工具的集合

16.解析库
a) Spirit库:基于EBNF范式的LL解析器框架

17.编程接口库
a) Function库:实现一个通用的回调机制,已被收入TR1
b) Parameter库:提供使用参数名来指定函数参数的机制

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

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tonglin12138/article/details/118220829

智能推荐

获取url参数的方法-程序员宅基地

文章浏览阅读2.1k次。获取url参数主要有两种方法第一种是利用字符串的分割方法,将url以“&”和“=”做分割,得到参数数组,然后再利用数组的迭代方法中的filter()方法,筛选并返回我们需要的数据。function GetQueryString(name) { //获取url中“?”后边的部分,并将结果以“&”分割成数组 var paras = url.split('?')[1].spli_获取url参数的方法

ubuntu下使用UVC摄像头_arkmicro technologies inc. usb2.0 pc camera-程序员宅基地

文章浏览阅读1.2k次。作者:SUKHOI27SMK转自:http://blog.csdn.net/sukhoi27smk/article/details/12003321导师让学习opencv编程,想用Qt但是发现windows上Qt使用directshow非常麻烦,就想到linux上编程,于是买一普通摄像头,回来一看,插在ubuntu电脑上没有反应,知道视驱动的问题,开始探寻如何在ubun_arkmicro technologies inc. usb2.0 pc camera

2021年秋招字节跳动四面总结,部门java后端基础架构,本人已成功拿到意向书_字节使用java的部门-程序员宅基地

文章浏览阅读1.6k次。前言base杭州,整个流程包括周末下来10天左右,因为没有录屏做记录,所以很多问题给忘了,只记得部分。大部分时间是在聊实习经历和项目,其他问题问的不多。8.27 一面(70分钟)实习业务相关lvs四层转发和nginx七层转发的区别?为什么要有lvs四层转发?close_wait和time_wait是什么?为什么要time_wait?499和502出现的原因是什么?session和cookie区别,解决了协议的什么问题?转账过程中,会出现什么事务的问题?from_count ->_字节使用java的部门

Pycharm2019.2.3设置菜单栏的字体大小_pycharm2019运行栏文字大小怎么更改-程序员宅基地

文章浏览阅读1.6k次。Pycharm2019.2.3设置菜单栏的字体大小1、首先进入settings2、选择Appearance3、在 Use custom font 前面勾上,然后就可以选择后面的字体大小了4、最后点击 ok 就完成了。5、亲测有效你要努力成为 “ 一个值得别人去爱的人 ” 而不是 “ 强求别人喜欢这样一个糟糕的你 ”我是凃大郎,一个苦逼的家伙..._pycharm2019运行栏文字大小怎么更改

mybatis-plus整合dynamic-datasource-spring-boot-starter之手动切换多数据源支持多种不同数据库类型(“坎坷之路”)_dynamic-datasource-spring-boot3-starter-程序员宅基地

文章浏览阅读2.3k次。mybatis-plus整合dynamic-datasource-spring-boot-starter之手动切换多数据源支持多种不同数据库类型(“坎坷之路”)简介:今天公司有一个这样场景业务,简单来说需要动态第三方数据源数据库,数据源信息,一开始根据想要查看的表进行一个表的信息与表的数据库信息获取,然后保存本地库内,用户可在界面点击获取到的表进行业务数据处理,需求重点:数据库是动态(会有不同类型数据库,也可能会有多种同种类型数据库),表字段是动态(不同数据库不同字段),所以根据这几点来处理你的CRUD_dynamic-datasource-spring-boot3-starter

【Qt学习】01 动态添加按钮_qt循环方式添加动态多个按钮,按钮名称怎么变-程序员宅基地

文章浏览阅读1.1k次。概述学习内容:两种场景下动态添加按钮的方法。环境IDE:Qt creator 4.11.0编译器:MinGW 5.3.0 32bit for C++场景一存在默认ui的场景,new QPushButton一般在setupUi之后。不然new出来的按钮无法点击。MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui-&.._qt循环方式添加动态多个按钮,按钮名称怎么变

随便推点

python源码安装关于ssl的坑_python源码安装 ssl-程序员宅基地

文章浏览阅读1.7k次。python源码安装关于ssl的坑之所以用源码安装也是因为pip安装依赖的时候出现错误的,很奇特的错误。原本都没有注意到这个问题,如果不是用pipreqs ./导出当前项目的依赖包还不会意识到这个问题。两个项目,同样的环境却一个能成功生成requirements.txt而另一个不行。原因如下:pipreqs 工具在读取项目导入依赖的时候,映射依赖名称错误导致本地已安装但读取错误,故下载。这让..._python源码安装 ssl

flutter设置widget显示和隐藏,手动隐藏键盘,container宽度充满_flutter container 超出隐藏-程序员宅基地

文章浏览阅读7k次。Offstage设置widget显隐切换Widget loginMine(BuildContext context) { return Offstage( offstage: !need_login,//true为隐藏,false为显示 child: Container( alignment: AlignmentDirectional.cent..._flutter container 超出隐藏

/etc/fstab文件的详解-程序员宅基地

文章浏览阅读10w+次,点赞48次,收藏220次。一、/etc/fstab文件的作用 磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。 系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。 二、挂载的限制 在说明这..._/etc/fstab

Java基础练习题及详细答案_java基础题 帮同学写的几个iava基础题/1编写 jaa 程序实现: (1)定义如下方法求一-程序员宅基地

文章浏览阅读2.3w次,点赞140次,收藏965次。本文参考 嗨客网 Java 实战前言本篇文章给大家安利一些关于 Java 基础的练习题,每道题都附有答案链接,答案解题的每个步骤到运行结果都十分详细,十分适合小白拿来练习,也十分适合准备面试的各位复习下 Java 基础,这篇文章我会不断更新,题目都是对应 Java 基础中的各个知识点,大家在学习了Java 基础之后,做几道相关的练习题,复习一下该知识点,在学习过程中,觉得十分抽象、晦涩难懂的知识点,配合一道案例题,或许会有意想不到的效果哦! 目录Java入门 Java Hell._java基础题 帮同学写的几个iava基础题/1编写 jaa 程序实现: (1)定义如下方法求一

CSAPP实验之Bomb Lab详解_csapp bomb-程序员宅基地

文章浏览阅读1.5w次,点赞32次,收藏194次。文章目录前言phase 1phase 2phase 3phase 4phase 5phase 6总结和感想前言Bomb Lab来自《深入理解计算机系统》(CSAPP)一书的第三章“程序的机器级表示”的配套实验,该实验的目的是通过反汇编可执行程序,来反推出程序执行内容,进而能够正确破解”密码“,解除“炸弹”。Bomb Lab文件目录如下:├── bomb├── bomb.c└── READMEbomb: 可执行程序,我们需要对其进行反汇编和gdb调试。bomb.c: bomb的主函数mai_csapp bomb

操作系统实验六 文件管理_操作系统文件管理实验-程序员宅基地

文章浏览阅读1.2w次,点赞24次,收藏143次。操作系统实验六 文件管理_操作系统文件管理实验