分享
 
 
 

《超越C++标准库:Boost库导引》:Boost库简介-数据结构,容器,迭代器,以及算法

王朝c/c++·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

数据结构,容器,迭代器,以及算法Boost.Any

Any库支持对任意类型的值进行类型安全的存取。当需要使用可变类型(variant type)的时候,有三种可能的解决方案:

无差别的(Indiscriminate)类型,比如void*. 这种解决方案几乎永远不可能达到类型安全,要尽可能地避免使用它。支持对一组类型进行存取的可变类型。可以进行转换的类型,比如在字符串类型和数字类型之间进行转换。Any实现的是第二种解决方案,基于值的(value-based)可变类型,而且支持任意多的类型。这个库经常被用于在标准库容器中存储异构类型(heterogeneous types)。更多信息请参考“Library 6: Any.”

Any的作者是Kevlin Henney。

Boost.Array

这个库是对C风格的数组的一个包装。可以把它们作为标准库容器的函数和类型定义(typedefs)的参数。从效果上看,这使得我们可以像对待标准库容器那样对待常规数组。这么做之所以有用是因为它在不影响效率的情况下增加了安全性,而且可以用统一的语法来处理标准库容器和常规数组。第二个理由意味着我们可以把常规数组应用于绝大多数需要对容器类型进行操作的函数。通常情况下,当运行效率要求最好使用常规数组而不是std:;vector的时候,考虑使用Array类。

Array的作者是Nicolai Josuttis。他借用Matt Austern和Bjarne Stroustrup的思想,构建了这个库。

Boost.Compressed_pair

这个库由一个单独的参数化类型,compresed_pair组成,它非常类似于标准库的std::pair。与std::pair的不同之处在于,boost::compressed_pair会对模板参数进行判断,看看它们是否为空,如果有空参数,就使用针对空参数的优化方法对pair的大小(size)进行压缩。

当pair的模板参数类型可能为空的时候,使用boost.compressed_pair来对pair进行存储。

Compressed_pair的作者是Steve Cleary,Beman Dawes,Howard Hinnant,以及John Maddock。

Boost.Dynamic_bitset

Dynamic_bitset库很大程度上类似于std::bitset,不同之处在于std::bistset把位数(也就是容器的大小)作为参数,而boost::dynamic_bitset支持运行时刻对容器大小进行调整。尽管dynamic_bitset支持与std::bitset相同的接口,但是它增加了一些针对运行时刻功能的函数以及std::bitset所没有的函数。通常情况下,当bitset的大小在编译时刻不能完全确定或者程序执行过程中可能会改变的时候,使用这个库作为std::bitset的替代。

Dynamic_bitset的作者是Jeremy Siek和Chuck Allison。

Boost.Graph

Graph是个处理图(graph)结构的库,它的设计在很大程度上受到STL的影响。它是通用以及高度可配置的,包括一些不同的数据结构:邻接表(adjacency lists),邻接矩阵(adjacency matrices),边线表(edge lists)。Graph库还提供了许多图算法,比如Dijsktra最短路径(Dijsktra's shortest path),Kruskal最小生成树(Kruskal's minimum spanning tree),拓扑排序等等,还有许多。

Graph的作者是Jeremy Siek, Lie-Quan Lee以及Andrew Lumsdaine。

Boost.Iterator

这个库为创建新的迭代器类型提供了一个框架,此外,它还提供了一些C++标准之外的有用的迭代器适配器。创建与标准兼容的迭代器类型通常是一件困难并且乏味的工作。Iterator库通过自动完成大多数细节部分的东西(比如提供标准所要求的typedefs)简化了上述工作。Iterator还使得适配一个现有的迭代器类型并且赋予它新的行为成为可能。比如,间接的迭代器适配器可以实施一个额外的去引用(dereferencing)操作,使得我们可以这么对待元素是指向某种类型的指针(或者智能指针)的容器,就好像容器所包含的元素就是那种类型的对象实体。

Iterator的作者是Jeremy Siek,David Abrahams,以及Thomas Witt。

Boost.MultiArray

MultiArray提供了一个多维容器,它在很大程度上类似于标准库容器而且相对于向量的向量(vectors of vectors)更加高效和直接。容器的维数是在声明的时候指定的,但是也支持切分和针对不同视图的投影,以及运行时刻的维数改变。

MultiArray的作者是。

Boost.Multi-index

Multi-index针对底层容器提供多个索引。也就是说,针对同一个底层容器你可以有不同的排序规则以及不同的存取语义。

当std::set和std::map不够用的时候可以使用Boost.Multi-index,通常这是为了高效的元素检索而需要维护多个索引情况。

Multi-index的作者是Joaquín M Lopez Muioz.

Boost.Range

这个库是一组针对ranges的概念和实用程序。直接使用ranges,而不是用代表ranges的一对迭代器来限定算法,这么做大大简化了算法的使用并且提高了用户代码的抽象级别。

Range的作者是Thorsten Ottosen。

Boost.Tuple

标准C++(通过使用类模板std::pair)已经包括了pairs,但是当前没有对n层垫片(n-tuples)的支持。Enter Tuple。与使用结构(structs)或者类定义n层垫片不同,类模板垫片直接支持把垫片定义为函数的返回类型或者参数,而且它还提供了存取垫片元素的泛型方法。关于这个库的更多详细信息请参见“Library 8: Tuple 8”。Tuple已经被即将到来的标准库技术报告所采纳。

Tuple的作者是Jaakko Jarvi。

Boost.Variant

Variant库包括一个通用的无差别的联合类(discriminated union class) ,这个类用于存储和操作来自于一组异构类型的对象。这个库的特性之一是,支持类型安全的访问,这消除了针对可变数据类型的类型转换代码的常见问题。

Variant的作者是Eric Friedman和Itay Maman。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有