原文链接:  吴豆豆http://www.cnblogs.com/gdutbean/archive/2012/03/30/2425201.html

Boost库

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、 可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。Boost库使用Boost License来授权使用,根据该协议,商业的非商业的使用都是允许并鼓励的。

Boost社区建立的初衷之一就是为C++的标准化工作提供可供参考的实现,Boost社区的 发起人Dawes本人就是C++标准委员会的成员之一。在Boost库的开发中,Boost社区也在这个方向上取得了丰硕的成果。在送审的C++标准库 TR1中,有十个Boost库成为标准库的候选方案。在更新的TR2中,有更多的Boost库被加入到其中。从某种意义上来讲,Boost库成为具有实践 意义的准标准库。

TR1是ISO/IEC TR 19768, C++ Library Extensions(函式库扩充)的一般名称。TR1是一份文件,内容提出了对C++标准函式库的追加项目。这些追加项目包括了正则表达式、智能指针、 哈希表、随机数生成器等。TR1自己并非标准,他是一份草稿文件。然而他所提出的项目很有可能成为下次的官方标准。这份文件的目标在于「为扩充的C++标 准函式库建立更为广泛的现成实作品」。   C++ tr1是针对C++标准库的第一次扩展。即将到来的下一个版本的C++标准c++0x会包括它,以及一些语言本身的扩充。tr1包括大家期待已久的 smart pointer,正则表达式以及其他一些支持范型编程的东东。草案阶段,新增的类和模板的名字空间是std::tr1。

大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。里面有许多具有工业强度的库,如graph库。   很多Boost中的库功能堪称对语言功能的扩展,其构造用尽精巧的手法,不要贸然的花费时间研读。Boost另外一面,比如Graph这样的库则是具有工业强度,结构良好,非常值得研读的精品代码,并且也可以放心的在产品代码中多多利用。 按照实现的功能,Boost可为大致归入以下20个分类,在下面的分类中,有些库同时归入几种类别。

字符串和文本处理库

  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 库:无需编译即可使用的正则表达式库

容器库

  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等复杂类型的联合体

迭代器库

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

算法库

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

函数对象和高阶编程库

  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++中的函数式编程。

泛型编程库

  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库:在编译时确定类型是否具有某些特征

模板元编程

  a) Function Types库:提供对函数、函数指针、函数引用和成员指针等类型进行分类分解和合成的功能   b) Fusion库:提供基于tuple的编译期容器和算法   c) MPL库:模板元编程框架   d) Proto库:构建专用领域嵌入式语言   e) Static Assert库:把断言的诊断时刻由运行期提前到编译期,让编译器检查可能发生的错误   f) Type Traits库:在编译时确定类型是否具有某些特征

预处理元编程库

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

并发编程库

  a) Asio库:基于操作系统提供的异步机制,采用前摄设计模式实现了可移植的异步IO操作   b) Interprocess库:实现了可移植的进程间通信功能,包括共享内存、内存映射文件、信号量、文件锁、消息队列等   c) MPI库:用于高性能的分布式并行开发   d) Thread库:为C++增加线程处理能力,支持Windows和POSIX线程

数学和数字库

  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号建议[1],实现编译期的分数操作。

排错和测试库

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

数据结构库

  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库:有类别的泛型联合类

图像处理库

  a) GIL库:通用图像库

输入输出库

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

跨语言混合编程库

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

内存管理库

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

解析库

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

编程接口库

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

综合类库

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

编译器问题的变通方案库

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

Boost简介的更多相关文章

  1. 64位win7下安装Boost 1.59.0 + boost.python 1.59.0 + gccxml + pygccxml + pyplusplus(py++)

    由于安装过程中实在是出现了N多问题,所以不得不专门写个帖子来记录一下这破东西在Win7下的安装过程,避免以后还要再用的时候踩坑. 1.Boost简介 Boost库是一个可移植.提供源代码的C++库,作 ...

  2. Boost学习总结(一)VS2010环境下编译STLport和Boost

    Boost学习总结(一)VS2010环境下编译STLport和Boost Boost简介 Boost库是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库.1998年,Beman G.Da ...

  3. ApacheCN C/C++ 译文集(二) 20211204 更新

    编写高效程序的艺术 零.序言 第一部分:性能基础 一.性能和并发性介绍 二.性能测量 三.CPU 架构.资源和性能 四.内存架构和性能 五.线程.内存和并发 第二部分:高级并发 六.并发和性能 七.并 ...

  4. Boost.Python简介

    Boost.Python简单概括:是Boost库的一部分:用来在C++代码中调用python代码以及在Python代码中调用C++代码,并且避免用户直接操作指针. 以下内容搬运自:https://wi ...

  5. [转] boost.circular_buffer简介

    http://www.cnblogs.com/TianFang/archive/2013/02/05/2892503.html 很多时候,我们需要在内存中记录最近一段时间的数据,如操作记录等.由于这部 ...

  6. Boost LRU-Cache使用方法简介

    缓存是提高系统运行效率的常用组件,可以将"有效的"业务数据直接返回用户,避免繁琐的计算过程.除了Redis.MemCache等常用缓存系统,应用程序内部也可以根据需要设置一定容量的 ...

  7. Boost Coroutine2 - stackful coroutine简介

    协程可以很轻量的在子例程中进行切换,它由程序员进行子例程的调度(即切换)而不像线程那样需要内核参与,同时也省去了内核线程切换的开销,因为一个协程切换保留的就是函数调用栈和当前指令的寄存器,而线程切换需 ...

  8. boost Asio网络编程简介

    :first-child { margin-top: 0px; } .markdown-preview:not([data-use-github-style]) h1, .markdown-previ ...

  9. C++ Boost库简介(转载)

    boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化.不过对比STL,boost更加实用.STL集中在算法部分,而boost包含了不少工具类, ...

随机推荐

  1. ARM公布“物联网”嵌入式mbed OS系统软件平台

    继ARM公司发布了为嵌入式微控制器设计的Cortex-M7架构处理器,ARM又公布了专为廉价低功耗“物联网”设计的新版软件及系统平台,以加速物联网设备的发展及部署.该软件为基于ARM现有Cortex- ...

  2. linux服务器修改ftp默认21端口方法

    1.登录服务器,打开vsftp.conf文件 # vim /etc/vsftpd/vsftpd.conf 2.在文件末尾增加listen_port=8021 #remote_charset=CP125 ...

  3. php session偶尔写入失败的原因

    session_start(); var_dump($_SESSION); $key = sprintf('%05d', mt_rand(0, 99999)); $key = strval($key) ...

  4. js实现复制到剪切板

    // <![CDATA[ function copy_clip(copy) { if (window.clipboardData) { window.clipboardData.setData( ...

  5. pyQuery的安装

    1. 直接通过pip安装 你会发现lxml怎么搞都报错,后来单独先安装libxml2和libxslt pip是找不到这个包的,只好百度.发现有很多的例子的解决方案.后来发现了个实用的. 2. 先安装l ...

  6. python 内置模块之logging

    1.将日志直接输出到屏幕 import logging logging.debug('This is debug message') logging.info('This is info messag ...

  7. sql 对一张表进行按照不同条件进行多次统计

    最近一直在做数据统计,在此过程中,遇到过好多种情况都是对一张表按照不同的条件进行多次统计,以前的做法是统计几次按照不同的条件left join 几次,虽然也能得到想要的结果,但是效率太低,反映在页面就 ...

  8. dblink 的源数据表结构修改后在存储过程里执行报错

    原情况:A服务器表A服务器B也有一张表A服务器B上有一个存储过程要把本地的head表向A服务器表里插入数据.变更后:在A服务器表里增加了一个字段inserttime,服务器B存储过程本地表向A服务器插 ...

  9. boost安装

    虽然很多Boost组件都只有头文件,不需要编译,但是有些Boost组件,如program_options.regex等还是需要编译生成库的.考虑到目前的程序需要用到program_options.re ...

  10. iOS7之定制View Controller切换效果

    在iOS5和iOS6前,View Controller的切换主要有4种: 1. Push/Pop,NavigationViewController常干的事儿 2. Tab,TabViewControl ...