- STL概论
- STL基本概念
- 六大组件简介
- STL六大组件的交互关系
- 三大组件
- STL优点
数据结构和算法的一套标准,并且降低他们之间的耦合关系,以提升各自的独立性、弹性、交互操作性(相互合作性,interoperability)
STL基本概念STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统称。现在主要出现在 c++中,但是在引入 c++之前该技术已经存在很长时间了。
STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator),容器和算法之间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数,这相比传统的由函数和类组成的库来说提供了更好的代码重用机会
六大组件简介STL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。
容器:
各种数据结构,如vector、list、deque、set、map等,用来存放数据,从实现角度来看,STL容器是一种class template。
算法:
各种常用的算法,如sort、find、copy、for_each。从实现的角度来看,STL算法是一种function tempalte.
迭代器:
扮演了容器与算法之间的胶合剂,共有五种类型,从实现角度来看,迭代器是一种将operator* , operator-> , operator++,operator–等指针相关操作予以重载的class template. 所有STL容器都附带有自己专属的迭代器
仿函数:
行为类似函数,可作为算法的某种策略。从实现角度来看,仿函数是一种重载了operator()的class 或者class template
适配器:
一种用来修饰容器或者仿函数或迭代器接口的东西。
STL六大组件的交互关系空间配置器:
负责空间的配置与管理。从实现角度看,配置器是一个实现了动态空间配置、空间管理、空间释放的class tempalte.
- 容器通过空间配置器取得数据存储空间,
- 算法通过迭代器存储容器中的内容,
- 仿函数可以协助算法完成不同的策略的变化,
- 适配器可以修饰仿函数。
容器 序列式容器 关联式容器 自动排序、有一个值作为key,起到索引作用 算法 质变算法 非质变算法 迭代器 双向迭代器 支持 ++ -- 随机访问迭代器 支持跳跃式访问容器中元素
常用的数据结构:数组(array),链表(list),tree(树),栈(stack),队列(queue),集合(set),映射表(map),根据数据在容器中的排列特性,这些数据分为序列式容器和关联式容器两种。
序列式容: 默认不会对数据进行排序。比如:vercor
关联式容器: 会对数据进行默认排序。比如map
质变算法:是指运算过程中会更改区间内的元素的内容。例如拷贝,替换,删除 等
**非质变算法:**是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历等
STL优点- 高重用性
- 高性能
- 高移植性
- 内建在编译器中
- 不用考虑底层实现,直接使用
- STL 的一个重要特性是将数据和操作分离



