.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)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。