我们使用经典的C/C++风格编程常常会遇到编写的算法因为严重依赖数据类型,所以当想要将该算法通用化,即,使其能够处理结构与操作行为相似但具体类型不同的数据时,则不得不重写出多个版本的尴尬局面。而泛型编程是以数学公理化的思维来对软件算法与数据结构进行高度抽象化与泛化的一种方法,能够很好地解决上述难题。STL则是基于C++模板技术实现泛型编程思想与方法的标准库。非常巧的但也几乎是必然的,STL之父Alex Stepanov曾在莫斯科大学研究数学。之后他于1987在贝尔实验室开始将C++用于泛型编程的研究。

以下分享我基于《Generic Programming and the STL》一书制作的思维导图,旨在对泛型编程的基本思想与STL标准库的主要数据结构有一个既宏观又具体的把握。