boost介绍

转载 2013年12月05日 14:24:42
boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。

 

    boost主要包含一下几个大类

字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、

泛型编程、模板元编程、预处理元编程、并发编程、数学相关、纠错和测试、

数据结构、输入/输出、跨语言支持、内存相关、语法分析、杂项。

 有一些库是跨类别包含的,就是既属于这个类别又属于那个类别。

 

    在文本处理部分,conversion/lexcial_cast类用于“用C++”的方法实现数字类型和字符串之间的转换。 主要是替代C标准库中的 atoi、 itoa之类的函数。当然其中一个最大的好处就是支持泛型了。 

    format库提供了对流的“printf-like”功能。printf里使用%d、%s等等的参数做替换的方法在很多情况下还是非常方便的,STL的iostream则缺乏这样的功能。format为stream增加了这个功能,并且功能比原始的printf更强。 

    regex,这个不多说了,正则表达式库。如果需要做字符串分析的人就会理解正则表达式有多么有用了。 

    spirit,这个是做LL分析的框架,可以根据EBNF规则对文件进行分析。(不要告诉我不知道什么是EBNF)。做编译器的可能会用到。一般人不太用的到。 

    tokenizer库。我以前经常在CSDN上看到有人问怎么把一个字符串按逗号分割成字符串数组。也许有些人很羡慕VB的split函数。现在,boost的tokenizer也有相同的功能了,如果我没记错的话,这个tokenizer还支持正则表达式,是不是很爽? 

    array: 提供了常量大小的数组的一个包装,喜欢用数组但是苦恼数组定位、确定数组大小等功能的人这下开心了。 

    dynamic_bitset,动态分配大小的bitset,我们知道STL里有个bitset,为位运算提供了不少方便。可惜它的大小需要在编译期指定。现在好了,运行期动态分配大小的bitset来了。 

    graph。提供了图的容器和相关算法。我还没有在程序中用到过图,需要用的人可以看看。 

    multi_array提供了对多维数组的封装,应该还是比较有用的。 

    并发编程里只有一个库,thread,提供了一个可移植的线程库,不过在Windows平台上我感觉用处不大。因为它是基于Posix线程的,在Windows里对Posix的支持不是很好。 

    接下来的 数学和数值 类里,包含了很多数值处理方面的类库,数学类我也不太熟,不过这里有几个类还是很有用的,比如rational分数类,random随机数类,等等。 

    static_assert,提供了编译器的assert功能。 

    test库,一个单元测试框架,非常不错。 

    concept_check提供了泛型编程时,对泛型量的一点检查,不是很完善,不过比没有好。 

    数据类型类any,一个安全的可以包含不同对象的类。把它作为容器的元素类型,那么这个容器就可以包含不同类型的元素。比用void *要安全。 

    compressed_pair,跟STL里的pair差不多。不过对空元素做了优化。 

    tuple,呵呵,也许是某些人梦寐以求的东西。可以让函数返回多个值。 

    跨语言支持:python,呵呵,好东东啊,可以将C++的类和函数映射给python使用。

以下为几个CSDN上的关于boost.python的中文资料:http://dev.csdn.net/article/19/19828.shtm,http://dev.csdn.net/article/19/19829.shtm,http://dev.csdn.net/article/19/19830.shtm,http://dev.csdn.net/article/19/19831.shtm

    pool:内存池,呵呵,不用害怕频繁分配释放内存导致内存碎片,也不用自己辛辛苦苦自己实现了。 

    smart_ptr:智能指针,这下不用担心内存泄漏的问题了吧。不过,C++里的智能指针都还不是十全十美的,用的时候小心点了,不要做太技巧性的操作了。 

    date_time,这个是平台、类库无关的实现,如果程序需要跨平台,可以考虑用这个。 

     timer,提供了一个计时器,虽然不是Windows里那种基于消息的计时器,不过据说可以用来测量语句执行时间。 

     uitlity里提供了一个noncopyable类,可以实现“无法复制”的类。很多情况下,我们需要避免一个类被复制,比如代表文件句柄的类,文件句柄如果被两个实例共享,操作上会有很多问题,而且语义上也说不过去。一般的避免实例复制的方法是把拷贝构造和operator=私有化,现在只要继承一下这个类就可以了,清晰了很多。 

     value_initialized:数值初始化,可以保证声明的对象都被明确的初始化,不过这个真的实用吗?似乎写这个比直接写初始化还累。呵呵,仁者见仁了。 

     这里面除了regex、python和test需要编译出库才能用,其他的大部分都可以直接源代码应用,比较方便。其实这些库使用都不难。最主要的原因是有些库的使用需要有相关的背景知识,比如元编程、STL、泛型编程等等。

  btw: 还有 Graph 库,用于图数据的处理

Boost Asio介绍--之一

一  简介          Boost Asio ( asynchronous input and output)关注异步输入输出。Boost Asio库提供了平台无关性的异步数据处理能力(当然...
  • gigglesun
  • gigglesun
  • 2014年03月26日 17:58
  • 2958

Boost和AdaBoost算法原理简介

本文主要参考: 1):《AdaBoost分类算法》http://wenku.baidu.com/link?url=udZ32_5hjlVNuqOAhuCEDPpHcQTEwEAxBiPkkPmPSM...
  • whiteinblue
  • whiteinblue
  • 2013年11月08日 11:06
  • 8810

C++ Boost库分类总结

按照实现的功能,Boost可为大致归入以下20个分类,在下面的分类中,有些库同时归入几种类别。 字符串和文本处理库 a) Conversion库:对C++类型转换的增强,提供更强的类型安全...
  • zuoyefeng1990
  • zuoyefeng1990
  • 2016年01月13日 09:40
  • 1169

boost库相关介绍

  • 2015年12月18日 09:21
  • 5.58MB
  • 下载

boost编译工具-bjam用法介绍

  • 2011年04月16日 22:03
  • 216KB
  • 下载

Boost的介绍.pdf

  • 2008年12月01日 12:00
  • 176KB
  • 下载

boost单独提取regex及自动链接介绍

项目中需要用到正则表达式校验复杂字符串有效性。于是想到了使用boost中的regex。 后来在具体实施时发现boost文件过于庞大,不能仅仅因为要使用regex就需要要将所有文件包含进来,更何况还要...
  • ithzhang
  • ithzhang
  • 2015年12月11日 09:18
  • 3276

boost-pool用法介绍

1.内存池是预先分配一块大的内存空间,然后可以再其中使用某种算法实现高效快速的自定制内存分配。内存池能够管理大量的对象,而且在需要大量地分配/释放小对象时很有效率,完全不用考虑delete,它近似于一...
  • u011898209
  • u011898209
  • 2013年12月04日 16:26
  • 388

C++各大有名库的介绍——准标准库Boost

C++各大有名库的介绍——准标准库Boost   Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工...
  • Augusdi
  • Augusdi
  • 2011年09月19日 15:19
  • 1838

boost-库介绍-002

boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。  STL集中在算法部分,而boost包含了不少工具...
  • tencupofkaiwater
  • tencupofkaiwater
  • 2017年04月24日 10:31
  • 257
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:boost介绍
举报原因:
原因补充:

(最多只允许输入30个字)