第1章 STL概论与版本简介
subroutines子程序
procedures程序
functions函数
classes类别
function libraries函数库
class libraries类别库
components组件
object oriented面向对象
patterns模式
reusability复用性
generic paradigm泛型思维
iterator迭代器
adapter配接器
increment前进
dereference取值
软件工程的慢慢奋斗史就是为了复用性的提升。
STL的价值在于两方面:(1)低层次的零部件。(2)高层次,泛型思维、系统化的、条理分明的“软件组件分类学(conponents taxonomy)”。
C++允许程序员通过指针以极佳弹性处理内存,这一点正是既要求一般化(泛型)又不失效能的一个重要关键。
STL六大组件,彼此可结合套用
1.容器(containers):各种数据结构,如vector,list,deque,set,map用来存放数据。
2.算法(algorithms):各种常用算法如sort,search,copy,erase…。
3.迭代器(iterators):扮演容器与算法之间的胶合剂,”泛型指针”,共有五种类型,以及其他衍生变化。
4.仿函数(functors):行为类似函数,可作为算法的某种策略(policy),一般函数指针可以视为狭义的仿函数。
5.配接器(adapters):一种用来修饰容器、仿函数、迭代器接口的东西。
6.配置器(allocators):负责空间配置与管理。从实现角度看,配置器是一个实现了动态空间配置,空间管理,空间释放的class template。
GUN源代码开放精神
open source — Richard Stallman(理查.史托曼) — GUN宣言 — GPL(General Public License,广泛开放授权)
Emacs/GCC/Linux
本书采用的套件是Cygnus C++ 2.91 for windows,又称为EGCS 1.1
实现版本
(1)HP实现版本
(2)P.J.Plauger版本(被Visual C++)采用
(3)Rouge Wave实现版本(被C++Builder采用)
(4)STLport实现版本,提供一个以SGI STL为蓝本的高度可移植性实现版本。
(5)SGI STL实现版本(被GCC采用),可以在C:\cygnus\sygwin-b20\include\g++找到所有STL头文件。
SGI STL的编译器组态设置
不同的编译器对C++语言的支持程度不尽相同,为了便于广泛移植,SGI STL准备了一个环境组态文件