STL六大组件

来源:互联网 发布:大众mirrorlink 软件 编辑:程序博客网 时间:2024/06/15 19:13

STL六大组件

1、容器(containers)

如vector、list、deque、set、map用来存放数据。从实现的角度看,STL容器是一种类模板。

2、算法(algorithms)

如sort、search、copy、erase。从实现角度看,STL算法是一种函数模板。

3、迭代器(iterators)

扮演容器与算法之间的胶合剂,就是所谓的“泛型指针”。从实现的角度看,迭代器是一种将operator*、operator->、operator++、operator--等指针相关操作予以重载的类模板。原生指针(native pointer)也是一种迭代器。

4、仿函数(functors)

行为类似函数,可以作为算法的某种策略。仿函数是一种重载了operator()的类或类模板。一般函数指针可视为狭义的仿函数。

5、适配器(adapters)

一种用来修饰容器、仿函数、迭代器接口的东西。

STL提供的queue和stack,虽然看似容器,其实只能算是一种容器适配器,因为他们的底层完全是由借助deque,所有操作都是由底层的deque供应。

6、配置器(allocators)

负责空间配置与管理。从实现的角度看,配置器是一个实现了空间配置、空间管理、空间释放的类模板。


STL六大组件交互关系:

Container通过Allocators取得数据存储空间。

Algorithm通过Iterator存取Container内容。

Functor可以协助Algorithm完成不同的策略变化

Adaptor可以修饰或套接Functor。

0 0