文章目录
0. 背景
1.STL是什么?
STL(Standard Template Library)标准模板库的英文缩写,包含有计算机科学领域常用的基本数据结构和基本算法。
2.STL与C++标准库的关系
3.版本
No. | 版本 | 作者 | 是否开源 | 特点 |
---|---|---|---|---|
1 | HP STL | [美]Alexandar Stepanov/[美]Meng Lee | 是 | 第一个实现版本 |
2 | SGI STL | [美]Alexandar Stepanov | 是 | GCC使用版本,源码可读性高 |
3 | STLport | [俄]Boris Fomitchev | 是 | 适用于VC++和C++ Builder等多种编译器,跨平台可移植 |
4 | P.J.Plauger STL | [美]P.J.Plauger | 否 | Visual C++使用版本,性能教高 |
5 | Rouge Wave STL | Rouge Wave公司 | 否 | Borland C++ 5.0-使用版本 |
参考:《STL源码剖析》侯捷
(***)1. STL 的组成
STL Components
No. | Component | 部件 | 作用 |
---|---|---|---|
1 | Container | 容器 | 存储数据 |
2 | Iterator | 迭代器 | 遍历容器数据 |
3 | Adaper | 适配器(配接器) | 容器转换 |
4 | Algorithm | 算法 | 通用算法 |
5 | Function Object/Functor | 函数对象/仿函数(函数子) | |
6 | Allocator | 分配器(配置器) | 分配释放内存 |
程序 = 数据结构(容器) + 算法
迭代器是容器与算法的桥梁
2. 容器分类
分类原则:结构
No. | Container | 容器 | e.g. |
---|---|---|---|
1 | Sequence Container | 顺序容器(序列容器) | vector ,list ,deque |
2 | Associative Container | 关联容器 | map ,``multimap, set, multiset` |
3 | Container Adapter | 容器适配器 | stack ,queue ,priority_queue |
3. 迭代器
- 分类原则:访问方式
No. | Iterator | 迭代器 | 能力 | e.g. |
---|---|---|---|---|
1 | Input Iterator | 输入迭代器 | 向前读取能力 | istream_iterator |
2 | Output Iterator | 输出迭代器 | 向前写入能力 | ostream_iterator |
3 | Forward Iterator | 向前迭代器 | 向前读取写入能力 | - |
4 | Biredirectional Iterator | 双向迭代器 | 双向读取写入能力 | list ,map ,set 的iterator |
5 | Random-Access Iterator | 随机访问迭代器 | 随机读取写入能力 | string ,vector ,deque 的iterator |
2.分类原则:操作类型
No. | Iterator | 迭代器 | 能力 | e.g. |
---|---|---|---|---|
1 | iostream Iteractor | iostream 迭代器 |
istream_iteractor ,ostream_iteractor |
|
2 | Insert Iteractor | 插入迭代器 | back_inserter ,front_inserter ,inserter |
|
3 | Reverse Iteractor | 反向迭代器 | reverse_iteractor |
4. 适配器分类
分类原则:适配部件
No. | Iterator | 迭代器 | 能力 | e.g. |
---|---|---|---|---|
1 | Container Adapter | 容器适配器 | stack ,queue ,priority_queue |
|
2 | Iterator Adapter | 迭代适配器 | back_inserter ,front_inserter ,inserter |
|
3 | Function-Object Adapter | 函数对象适配器 | bind1st ,bind2nd ,not1 ,not2 |
5. 算法分类
分类原则:按操作类型
No. | Algorithm | 算法 | e.g. |
---|---|---|---|
1 | Read Only | 只读算法 | find ,count ,search ,for_each ,mismatch ,equal ,binary_search |
2 | Write Only | 写容器算法 | fill ,generate ,copy ,transform ,merge ,swap ,replace |
3 | Sort | 排序算法 | sort ,stable_sort ,reverse |
6. 函数对象分类
分类原则:运算类型
No. | Function Object | 函数对象 | e.g. |
---|---|---|---|
1 | Arithmetic Function-Object | 算术函数对象 | plus<T> ,minus<T> ,multiplies<T> ,divides<T> ,modulus<T> ,negate<T> |
2 | Relational Function-Object | 关系函数对象 | equal_to<T> ,not_equal_to<T> ,less<T> ,less_equal<T> ,greater<T> ,greater_equal<T> |
3 | Logical Function-Object | 逻辑函数对象 | logical_and<T> ,logical_or<T> ,logical_not<T> |
7. 分配器
功能:获取释放内存
来源:CSDN
作者:Pierce110110
链接:https://blog.csdn.net/Pierce110110/article/details/104502998