C++ Boost库简介

转载 2007年09月25日 17:47: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.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、泛型编程等等。

 

超越C++标准库 Boost库导论

  • 2017年12月07日 16:48
  • 20.4MB
  • 下载

linux安装boost库

linux安装boost库Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,,作为标准库的后备,是C++标准化进程的发动机之一。Boost库分为两个部分来使用,一是直接使用对应的头文件,二...
  • happyyear1
  • happyyear1
  • 2016-03-24 12:44:38
  • 4128

C++ Boost库初次尝试

Boost库被称为C++的准标准库,功能非常强大,最近准备学习这个库。下面是一个示例程序 // ProtocolBufferTEST.cpp // #include "stdafx.h" ...
  • PirLCK
  • PirLCK
  • 2017-02-09 19:38:07
  • 691

vs2010使用boost库,安装

今天抽时间学习了一下boost库,用c++ 做算法,自己再去造轮子实在是浪费时间,学习boost未来工作能直接上手。 比如caffe就直接使用了boost库, 这里边常用的 对于时间操作,字符串操作...
  • u014114990
  • u014114990
  • 2016-05-13 14:44:07
  • 3193

Boost库的下载及总结

因为有个游戏安装需要下载boost库,查阅晚上相关文档,这么好的库应该极大地发扬光大才是啊。 官网http://www.boost.org/ 下载地址 https://sourceforge.net/...
  • WAN_EXE
  • WAN_EXE
  • 2017-03-28 15:02:59
  • 1840

VS2013 安装配置 C++ boost 库

boost:提升,犹在功能的提升,也见于机器学习的相关算法。也即Boost是对STL(标准模板库)的升级版,性能提升版。本文我们会发现,Boost开发者为Windows平台下的boost的安装配置提供...
  • lanchunhui
  • lanchunhui
  • 2016-01-16 20:16:39
  • 1319

关于C++ Boost库的使用

Boost介绍: Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。   Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。B...
  • jonahzheng
  • jonahzheng
  • 2013-09-27 23:15:12
  • 2974

C++ Boost库分类总结

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

Boost C++ 库入门

简介: Boost C++ 库(Libraries)是一组扩充C++功能的经过同行评审(Peer-reviewed)且开放源代码程序库。大多数的函数为了能够以开放源代码、封闭项目的方式运作,而授权于B...
  • sinat_20265495
  • sinat_20265495
  • 2016-09-06 15:04:05
  • 11688

Boost库安装

简介 Boost库是一个可移植、提供源码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C...
  • yzhang6_10
  • yzhang6_10
  • 2016-03-19 20:55:54
  • 2434
收藏助手
不良信息举报
您举报文章: C++ Boost库简介
举报原因:
原因补充:

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