- 泛型编程:
泛型编程旨在编写独立于数据类型的代码。C++中模板使得能够按泛型定义函数或类,而STL通过通用算法更进了一步。(泛型编程旨在使用同一个算法函数处理数组、链表或任何其他容器类型)
泛型和OOP之间共同点是抽象和创建可重用代码,但OOP关注的是编程的数据方面,而泛型编程关注的是算法。
STL是一种泛型编程模式,包含一个容器类模板、迭代器类模板、函数对象模板和算法函数模板的集合。
- 容器是一个与数组类似的单元,可以存储若干相同类型的值;
- 迭代器能够用来遍历容器的对象,与能够遍历数组的指针类似,是广义指针;
- 函数对象是类似于函数的对象,可以是类对象或函数指针(包括函数名);
- 算法是完成特定任务的处方。
- 模板使得算法独立于存储的数据类型,而迭代器使得算法独立于使用的容器类型。
- 迭代器类型:输入迭代器、输出迭代器、正向迭代器、双向迭代器、随机访问迭代器。
- STL使用属于概念描述一组要求(如:正向迭代器要求能够被解除引用以便读写,同时能够被递增);概念真正的实现方式被称为概念的模型(如:正向迭代器概念可以使常规指针或导航链表的对象);基于其他概念的概念叫做改进(如:双向迭代器是正向迭代器概念的改进)。