您的位置:首页 > 其它

Boost介绍——该内容主要为设计泛型粒子系统而准备(不全,需要的留邮箱,系统里发布不上去,说有不该有的词语)

2008-10-31 17:47 323 查看

字符串及文本处理

Boost.Regex

正则表达式是解决大量模式匹配问题的基础。它们常用于处理大的字符串,子串模糊查找,按某种格式tokenize字符串,或者是基于某种规则修改字符串。由于C++没有提供正则表达式支持,使得有些用户被迫转向其它支持正则表达式的语言,如Perl, awk, 和 sed。Regex提供了高效和强大的正则表达式支持,基于与STL同样的前提而设计,这使得它很容易使用。Regex已被即将发布的Library Technical Report接受。更多的信息,请见"Library 5: Regex."
Regex 的作者是 Dr. John Maddock.


Boost.Spirit
Spirit库是一个多用途的、递归的语法分析器生成框架。有了它,你可以创建命令行分析器,甚至是语言预处理器[1]。它允许程序员直接在C++代码里使用(近似于)EBNF的语法来指定语法规则。分析器非常难写,对于一个特定的问题,它们很快就变得难于维护和看懂。而Spirit解决了这些问题,而且达到了与手工制作的分析器一样或几乎一样的性能。

[1] Wave库使用Spirit实现了一个与C++高度一致的预处理器,就证明了这一点。

Spirit 的作者是 Joel de Guzman, 以及一组熟练的程序员。

Boost.String_algo
这是一组与字符串相关的算法。包括很多有用的算法,用于大小写转换,空格清除,字符串分割,查找及替换,等等。这组算法是目前C++标准库里已有功能的扩展。

String_algo 的作者是 Pavol Droba.

Boost.Tokenizer

这个库提供了把字符序列分割成记号(token)的方法。通用的语法分析任务包括了在已分割的文本流里查找数据。如果可以把字符序列视为多个元素的容器将很有帮助,容器中的元素被执照用户定义的规则所分割。语法分析就成为了在这些元素上进行操作的单个任务,Tokenizer正好提供了这种功能。用户可以决定字符序列如何被分割,在用户请求新的元素时,库将找出相应的记号。

Tokenizer 的作者是 John Bandela.

数据结构, 容器, 迭代器, 和算法

Boost.Any

Any库支持类型安全地存储和获取任意类型的值。当你需要一个可变的类型时,有三种可能的解决方案:

无限制的类型,如 void*. 这种方法不可能是类型安全的,应该象逃避灾难一样避免它。

可变的类型,即支持多种类型的存储和获取的类型。

支持转换的类型,如字符串类型与整数类型之间的转换。

Any实现了第二种方案,一个基于值的可变化的类型,无限可能的类型。这个库通常用于把不同类型的东西存储到标准库的容器中。更多的说明请见 "Library 6: Any."

Any 的作者是 Kevlin Henney.

Boost.Array
这个库包装了普通的C风格数组,给它们增加了一些来自于标准库容器的函数和typedef 。其结果就是可以把普通的数组视为标准库的容器。这非常有用,因为它增加了类型安全性而没有降低效率,而且它使得标准库容器和普通数组拥有统一的语法。后一点意味着可以把普通数组用于大多数的要求容器类来操作的函数。当要求软件要达到普通数组的性能时,可以用Array来替代std::vector.

Array 的作者是 Nicolai Josuttis, 它在Matt Austern 和 Bjarne Stroustrup早期提出的思想之上建立了这个库。

Boost.Compressed_pair

这个库包括一个参数化的类型, compressed_pair, 它非常象标准库中的 std::pair. 与std::pair不同之处在于, boost::compressed_pair 对模板参数进行评估,看其中有没有空的参数,如果有,使用空类优化技术来压缩pair的大小。

Boost.Compressed_pair 常用于存放一对对象,其中之一或两个都可能是空的。

Compressed_pair 的作者是 Steve Cleary, Beman Dawes, Howard Hinnant, 和 John Maddock.

Boost.Dynamic_bitset

Dynamic_bitset库非常象std::bitset, 除了std::bitset 是用参数来指定位数(即容器的大小), 而boost::dynamic_bitset 则支持在运行期指定大小。dynamic_bitset 支持与std::bitset一样的接口,还增加了支持运行期特定功能的函数和一些std::bitset中没有的功能。在bitset的大小无法在编译期确定或在程序运行时可能变化的情况下,这个库通常用于替换std::bitset。

Dynamic_bitset 的作者是 Jeremy Siek 和 Chuck Allison.

Boost.Graph

Graph是一个处理图结构的库,它的设计受到STL的重要影响。它是泛型的,高度可配置,并且包括多个不同的数据结构:邻接链表, 邻接矩阵, 和边列表。Graph还提供了大量的图算法,如Dijsktra最短路径算法,Kruskal最小生成树算法,拓朴逻辑排序,等等。

Graph 的作者是 Jeremy Siek, Lie-Quan Lee, 和 Andrew Lumsdaine.

Boost.Iterator

这个库提供一个创建新的迭代器类型的框架,还提供了许多有用的迭代器适配器,比C++标准中定义的更多。创建遵循标准的新迭代器类型是一件困难且乏味的工作。Iterator通过自动完成大多数细节,如提供所需的 typedef,简化了这件工作。Iterator还可以改编已有的迭代器类型以赋于它新的行为。例如,间接迭代器适配器增加了一个额外的解引用操作,可以把一个包含某种对象的指针(或智能指针)的容器变成象一个包含该对象的容器。

Iterator 的作者是 Jeremy Siek, David Abrahams, 和 Thomas Witt.

Boost.MultiArray

MultiArray提供了一个多维容器,它很象标准库的容器,但比向量的向量更有效、更高效,更直接。容器的维数在声明时指定,但它支持限制(slicing)和映身(projecting)不同的视图(view),也可以在运行期改变维数。

MultiArray 的作者是 Ronald Garcia.

Boost.Multi-index

Multi-index为底层的容器提供多个索引。这意味着一个底层的容器可以有不同的排序方法和不同的访问语义。当std::set 和 std::map不够用时,就可以用Boost.Multi-index,通常是在需要为查找元素而维护多个索引时。

Multi-index 的作者是 Joaquín M López Muñoz.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐