什么是STL:
- STL(Standard Template Library的简称)是一个泛型化的数据结构和算法库。
- 从逻辑层次上看,STL是泛型化程序设计思想在C++中的具体应用。
- 从实现层次上 看,STL是一种类型参数化(Type parameterized)是程序设计方法,是一个基于模板的标准类库,称为容器。
- 从逻辑结构和存储结构上看,STL允许重复利用C++标准程序库中已经定义好的通用数据结构来构造符合自己实际需要的特定数据结构,从而简化程序开发,提高软件开发的效率。
STL由5个部分组成:
- 容器(container);
- 迭代器(iterator);
- 适配器(adaptor);
- 算法(algorithm);
- 函数对象(function object)。
STL容器
-
顺序容器(sequence container)
——逻辑上被认为实在连续的存储空间中存储。
容器适配器(container adaptor)
关联容器(associate container)
(具体实现,下次再整理)
1.面向对象设计与泛型设计的异同点:
面向对象程序设计更注重的是对问题域中数据的抽象。即所谓抽象数据类型(Abstract Data Type),而算法通常被附属于数据类型之中,独立于具体数据类型和数据结构;在面型对象程序设计中,算法往往被作为类的成员函数包含在类中。
在泛型程序设计中,算法与容器(数据结构)的分离具有通用性,不属于某个具体类。与针对问题和数据结构的面向对象的方法不同,泛型编程中强调的是通用的参数化算法,它们对各种数据类型和数据结构都能以相同的方式进行工作,从而实现源代码级的软件重用。
2.迭代器:
在STL中,迭代器是一种广义的指针,用于指向容器中的某个位置的数据元素,可以用来存取容器内存存储的数据。迭代器是连接容器和算法的“纽带”,为数据提供了抽象,使写算法的人不必关心各种数据结构的细节。迭代器的功能是通过使用迭代器(一种通用的方法)来访问具有不同结构的各种容器中的每个元素。