首页 > 代码库 > .NET中是否可用标准模版库(STL)

.NET中是否可用标准模版库(STL)

分析问题

  标准模版库(STL)实在惠普实验室开发出来的一套算法类库的集合,从概念上主要区分为三大部分:

  1、算法(algorithm)。

  2、容器(container)。

  3、迭代器(iterrator)。

  STL的设计都致力于打造通用的算法和类库,例如一个排序的算法,可能针对包含不同类型元素的集合进行排序。在C++中,这样的通用性需要依靠模版来实现,而在.NET中,则依靠泛型。.NET中的STL类库有Wintellect团队开发完成,类库名称为Power Collections,作为一个通用的容器类库,笔者鼓励读者使用.NET中的STL模版库,这样做既能节省开发时间,又能从Power Collections高效的算法中受益。下表列出了Power Collections中一些常用的类型。

类型简介
Algorithms算法类型包含了一系列操作容器的静态方法,大多数方法处理标准的泛型接口,例如IEnumerable<T>、ICollection<T>、IList<T>等
Bag<T>一个T类型元素的集合,和Set类型不同的是,Bag中可以包含重复的元素(重复是指Equals方法调用返回true)
BagList<T>提供了一个有序的元素的集合,BigList的算法针对大集合进行了优化,对于拥有100个约束以上的集合,BigList拥有非常高效的插入、删除、复制和连接
CollectionBase<T>作为一个基类来使用,可以用来方便地实现ICollection<T>或者ICollection接口
Deque<T>实现了双头队列的数据结构。Deque非常类似List类型,任何节点都非常容易获取。和List不同的是,Deque在头部插入数据非常高效,而List相对地要慢一点。作为性能上的交换,当使用下标来获取元素时Deque比List稍微慢一点
DictionaryBase<TKey,TValue>作为一个基类来使用,可以方便地实现IDictionary<T>或者IDictionary
OrderedDictionary<TKey,TValue>一个键与值相应的字典容器,键在类型中被排序并且保证每一个键都有一个对应的值
OrderedBag<T>一个有序的T对象元素的容器,允许重复元素存在
OrderedSet<T>一个有序的T对象元素的容器,最小值的下标是0,次小的是1,并依此类推
Set<T>一个无序的T对象约束的容器,不允许重复元素存在

说明

  Power Collection类库和产品文档可以从http://www.wintellect.com/上免费获得。

答案

  Wintellect团队为.NET开发了STL类库Power Collection,这个类库可以免费获得,.NET程序员可以并且鼓励使用标准模版库(STL)