三十分钟掌握 STL
这是本小人书。原名是《》,不知道是谁写的。不过我倒觉得很有趣,所以化
了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉
得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。
译者:
STL 概述
的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离
确实使得 变得非常通用。例如,由于 的 函数是完全通用的,你可以用它来
操作几乎任何数据集合,包括链表,容器和数组。
要点
算法作为模板函数提供。为了和其他组件相区别,在本书中 算法以后接一对
圆括弧的方式表示,例如 。
另一个重要特性是它不是面向对象的。为了具有足够通用性, 主要依赖于模
板而不是封装,继承和虚函数(多态性)—— 的三个要素。你在 中找不到任何明
显的类继承关系。这好像是一种倒退,但这正好是使得 的组件具有广泛通用性的底层
特征。另外,由于 是基于模板,内联函数的使用使得生成的代码短小高效。
提示
确保在编译使用了 的程序中至少要使用 优化来保证内联扩展。
STL 组件
提供了大量的模板类和函数,可以在 和常规编程中使用。所有的 的大
约 个算法都是完全通用的,而且不依赖于任何特定的数据类型。下面的小节说明了三个
基本的 组件:
) )×××××××××××××迭代器提供了访问容器中对象的方法。例如,可以使用一对迭代器
指定 或 ! 中的一定范围的对象。迭代器就如同一个指针。事实上,"#
#的指针也是一种迭代器。但是,迭代器也可以是那些定义了 $%以及
其他类似于指针的操作符地方法的类对象。
&) &)×××××××××××××容器是一种数据结构,如 ,!,和 '(,以模板类的方法
提供。为了访问容器中的数据,可以使用由容器类输出的迭代器。
) )×××××××××××××算法是用来操作容器中的数据的模板函数。例如, 用 来对
一个 ! 中的数据进行排序,用 )'来搜索一个 中的对象。函数本身与
他们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容
评论0