
关于我们 | 广告业务 | 网站业务 | 联系我们
首页 文档中心 下载 论坛
查看评注 评注
C++ STL简介
原创:怒火之袍
一、STL简介
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列
Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发
它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间
STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和i
器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由
来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文
<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>
<queue>、<set>、<stack>和<utility>。以下笔者就简单介绍一下STL各个部
二、算法
大家都能取得的一个共识是函数库对数据类型的选择对其可重用性起着至关重
说,一个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯
它的参数类性要高。而C++通过模板的机制允许推迟对某些类型的选择,直到
说对模板进行特化的时候,STL就利用了这一点提供了相当多的有用算法。它
中完成这些算法的——你可以将所有的类型划分为少数的几类,然后就可以在
一种类型替换掉同一种类中的其他类型。
STL提供了大约100个实现算法的模版函数,比如算法for_each将为指定序列中
指定的函数,stable_sort以你所指定的规则对序列进行稳定性排序等等。这
悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算法模板,
的功能并大大地提升效率。
算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。<algor
文件中最大的一个(尽管它很好理解),它是由一大堆模版函数组成的,可以
大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历
改、移除、反转、排序、合并等等。<numeric>体积很小,只包括几个在序列
算的模板函数,包括加法和乘法在序列上的一些操作。<functional>中则定义
以声明函数对象。
三、容器
在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法
中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要。
经典的数据结构数量有限,但是我们常常重复着一些为了实现向量、链表等结
这些代码都十分相似,只是为了适应不同数据的变化而在细节上有所出入。ST
了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型下的数据
些模版类,STL容器对最常用的数据结构提供了支持,这些模板的参数允许我
页码,1/3C++ STL简介 - 放飞技术网
2005-5-16http://www.frontfree.net/view/article_655.html