STL(标准模板库)是C++标准库中最重要的组成部分,它不仅是一个可复用组件库,而且是一个包罗算法和数据结构的软件空间。
STL充分体现了泛型化思想,它致力于追求复用。在复用的同时,STL还追求效率,比如迭代器萃取机制。总的来说,STL所做的一切都是以复用和效率为目标的。
STL有多个版本,linux下面用的SGI版,windows下面的PJ版。此外还有HP版本、RW版本等。
STL的六大组件:
1、容器:
各种数据结构如vector,list,stack,queue,set,map…用来存放数据。
容器本质上而言就是一种数据结构,我们知道任何的数据结构都是为了实现某种特定的算法。STL容器便是将一些最简单的数据结构实现出来。根据数据在容器中的排列特性,可以将这些数据结构分为序列式和关联式两种。
2、算法:
各种常用的算法如sort,search,copy,erase…。
算法便是程序的灵魂。STL里面将最常用的算法规范化出来,大约有70多个算法。其中包括:排序、查找、排列组合,以及用于数据移动、赋值、删除,比较、组合、运算等等的算法。
特定的算法往往可以搭配特定的数据结构,特定的数据结构是为了实现某种特定的算法。
3、迭代器
扮演容器与算法之间的胶合剂,是所谓的“泛型指针”,共有五种类型。所有的容器都附带有自己专属的迭代器,只有容器的设计者才知道如何遍历自己的元素。原生指针,智能指针也是一种迭代器。
迭代器模式:提供一种方法,使之能够依序巡防某个容器内所含的各个元素,而又不暴露该容器的内部表达式。
不论是泛型思维或STL的实际运用,迭代器都扮演着重要的角色。STL的中心思想是:将容器和算法分开设计,最后再以一贴胶着剂将它们撮合在一起。而迭代器就是连接容器与算法的中间桥梁。个人认为,迭代器还有一个功能就是将容器的接口统一化。
4、仿函数
仿函数是重载operator()的class对象,因为其行为类似于函数,所以称作仿函数。它也叫做函数对象。
5、配接器
一种用来修饰容器或仿函数或迭代器接口的东西。配接器在STL组件的灵活组合运用功能上扮演着轴承、转换器的功能。Adapter这个概念实际上是一种设计模式,将一个class的接口转换成为另一个class的接口,使原本因为接口不兼容而不能合作的class可以一起运作。
6、配置器
负责空间配置与管理,从实现的角度看,配置器是一个实现了动态空间配置、空间管理,空间释放的class template。空间配置器的引入第一是为了提高效率,第二是为了减少内存碎片。我们知道STL可是很在乎效率的。
STL——总纲
最新推荐文章于 2024-07-02 11:33:00 发布