目前没有任何一种程序语言提供任何关键词(keyword)可以实质对应上述所谓的 抽象概念。但是 C++ classes 允许我们自行定义型别,C++ templates 允许我们将型别参数化,藉由两者结合并透过traits编程技法,形成了 STL 的绝佳温床
二、STL历史
STL系由 Alexander Stepanov创造于1979年前后,这也正是Bjarne Stroustrup 创造C++的年代。虽然 David R. Musser 于 1971 开始即在计算器几何领域中发展并倡导某些泛型程序设计观念,但早期并没有任何程序语言支持泛型编程
第一 个支持泛型概念的语言是 Ada。Alexander 和 Musser 曾于 1987 开发出㆒套相关的 Ada library。然而 Ada 在美国国防工业以外并未被广泛接受,C++ 却如星火燎原 般地在程序设计领域中攻城略地。当时的C++ 尚未导入template 性质,但Alexander 却已经意识到,C++ 允许程序员透过指针以极佳弹性处理内存,这一点正是既 要 求㆒般化(泛型)又不失效能的一个重要关键
更重要的是,必须研究并实验出一个“建立在泛型编程之上”的组件库完整架构。 Alexander 在AT&T 实验室以及惠普公司的帕罗奥图(Hewlett-Packard Palo Alto) 实验室,分别实验了多种架构和算法公式,先以C 完成,而后再以 C++ 完成。 1992 年 Meng Lee 加入 Alex 的项目,成为 STL 的另一位主要贡献 者
贝尔(Bell)实验室的 Andrew Koenig 于1993 年知道这个研究计划后,邀请 Alexander 于是年 11 月的 ANSI/ISO C++ 标准委员会会议上展示其观念。获得热 烈回应。 Alexander 于是再接再励于次年夏天的 Waterloo(滑铁卢)会议开幕 前,完成正式提案,并以压倒性多数一举让这个巨大的计划成为 C++ 标准规格的 意部份
三、STL与C++标准链接库
1993/09,Alexander Stepanov 和他一手创建的 STL,与 C++ 标准委员会有了第一次接触
当时 Alexander 在硅谷(圣荷西)给了C++ 标准委员会一个演讲,讲题是:The Science of C++ Programming。题目很理论,但很受欢迎。1994/01/06 Alexander 收到 Andy Koenig(C++ 标准委员会成员,当时的 C++ Standard 文件审核编辑)来信,言明 如果希望 STL 成为 C++ 标准链接库的一部份,可于 1994/01/25 前送交一份提案 报告到委员会。Alexander 和 Lee 于是拼命赶工完成了那份提案