boost库的简单介绍

转载 2006年05月23日 20:46:00
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.shtmhttp://dev.csdn.net/article/19/19829.shtmhttp://dev.csdn.net/article/19/19830.shtmhttp://dev.csdn.net/article/19/19831.shtm

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

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

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

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

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

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

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

转载自“令狐虫的无聊空间

简单编写makefile文件,实现GCC4.9编译项目,加入boost库测试等等。。

一、需要用到的几个测试文件

windows 下boost库的简单编译

用编译器vs2010自带的Visual Studio Command Prompt (2010)工具编译boost库。 1、下载boost源码。可以去boost官网:boost库源文件下载。 2、...

Boost库简单运用——时间与日期的处理(一)

对于时间与日期的处理一直都是一个比较复杂的问题,而C++中对于时间与日期的处理也是比较简陋的,并不像Java、C#之流提供了非常方便易用的类。但随着Boost的推出,对于时间的处理也变得越来越简单方便...

Boost库简单运用——shared_ptr

Boost库简单运用——shared_ptr概述​ 在C++项目中,内存管理的问题一直是个大问题,也是个很常见的问题。项目交由经验不足的程序员来编写维护,常出现内存泄漏、访问非法内存之类的问题,资...

Boost库简单运用——时间与日期的处理(三)

今天我们就开始boost的日期处理部分,日期有太多需要细细考虑的地方,遇到日期处理问题时,自己写一个处理类,那显然是极其耗时的。学习了今天的内容之后,相信我们在日期处理时将更加得心应手。今天我们学习的...

C++简单计时器类(修改自boost程序库)

/*- ========================================================== * 文件名 :CTimer.h * 开发人员:袁培荣...

boost库asio详解8——几个TCP的简单例子

摘于boost官网的几个例子, 做了点小修改, 笔记之. 同步客户端 [cpp] view plaincopyprint? void test_asi...

了解boost库最为简单的timer组件

timer类非常小,全部实现加上注释才72行。非常有必要深入了解一下。下面的源码基本与timer.hpp一致,不过自己多此一举地加了一个析构函数。事实上没有资源需要销毁,只是为了承接progress_...
  • ajioy
  • ajioy
  • 2012年03月09日 20:14
  • 737

boost标准库开发环境搭建boost标准库环境搭建以及简单案例介绍

1、下载boost相关的库的安装包 网址:http://www.boost.org/ 其中1.55.0版本的下载地址是:http://sourceforge.net/projects/boost/fi...

boost库相关介绍

  • 2015年12月18日 09:21
  • 5.58MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:boost库的简单介绍
举报原因:
原因补充:

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