一、为什么需要STL?
目的:为了建立一套重复利用的东西
使用STL可以避免从事大量重复的工作。
为建立数据结构的一套标准,诞生了STL。
二、基本概念
①STL是标准模板库
②STL从广义上分为:容器、算法、迭代器
③容器和算法通过迭代器进行无缝连接
④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。
4.仿函数(functors):行为类似函数,可作为算法的某种策略。从实现的角度看,仿函数是一种重载了operator()的class或class template,一般函数指针可视为狭义的仿函数。
5.配接器(adapters):一种用来修饰容器或仿函数或迭代器接口的东西。
6.配置器(allocators):负责空间配置与管理。从实现的角度来讲,配置器是一个实现了动态空间配置、空间管理、空间释放的class template。
四、STL内存放数据
包含头文件:
#include <vector>
#include <algorithm>
1.通过尾插法插入数据
vector<int> a;