STL六大组件

STL提供六大组件,彼此可以组合套用:

1.容器(containers):各种数据结构,如vector,list,deque,set,map,

用来存放数据。从实作的角度看,STL容器是一种class template。

2.算法(algorithms):各种常用算法如sort,search,copy,erase...,

从实作的角度看,STL算法是一种function template。

3.迭代器(iterators):扮演容器与算法之间的胶着剂,是所谓的 泛型指标,

是一种将operator*,operator->,operator++,operator--等指标相关操作

予以多载化的class template。所以STL容器都附带有自己专属的迭代器---是的,

只有容器设计者才知道如何巡访自己的元素。原生指标(native pointer)也是一

种迭代器。

4.仿函式(functors):行为类似函式,可作为算法的某种策略。从实作的角度看,

仿函式是一种重载了operator()的class或class template。一般函式指标可视为狭义

的仿函式。

5.配接器(adapters):一种用来修饰容器或仿函式或迭代器接口的东西。例如STL提供的queue和

stack,虽然看似容器,其实只能算是一种容器配接器,因为他们的底部完全借重deque,

所有动作都由底层的deque供应。改变functor接口者,称为function adapter,改变container

接口者,称为container adapter,改变iterator界面着,称为iterator adapter。

6.配置器(allocators):负责空间配置与管理,从实作的角度看,配置器是一个实现了动态空间配置、

空间管理、空间释放的class template。

STL六大组件的交互关系:Container透过Allocator取得数据存储空间,Algorithm透过Iterator存取

Container内容,Functor可以协助Algorithm完成不同的策略变化,Adapter可以修饰或套接Functor。

原文地址:https://www.cnblogs.com/yanglf/p/2751907.html