STL(Standard Template Library,标准模板库)
STL从广义分为:容器(container),算法(algorithm),迭代器(iterator)
容器,算法之间通过迭代器进行无缝连接,STL几乎都采用模板类或模板函数
一、STL六大组件:容器,算法,迭代器,仿函数,适配器(配接器),空间配置器
1.容器:各种数据结构,如vertor,list,deque,set,map等,用于存储数据
常用数据结构:数组,链表,树,栈,队列,集合,映射表等。
序列式容器:强调值的排序,序列式容器中每个元素均为有固定位置
关联式容器:二叉树结构,各元素之间没有严格的物理上序列关系
2.算法:各种常用算法,如sort,find,copy,for_each等
有限的步骤,解决逻辑或数学上问题
质变算法:指运算过程中会更改区间内的元素内容,如拷贝,替代,删除等
非质变算法:指运算过程中不会更改区间内的元素,例如查找,计数,遍历,寻找极值等
3.迭代器:扮演容器与算法之间的胶合剂
提供一种方法,使之能依次寻访某个容器所含的各个元素,无需暴露该容器的内部表示方式。
每个容器都有自己专属迭代器,使用类似于指针
常用容器中迭代器为双向迭代器和随机访问迭代器。
using namespace std;
#include <iostream>
#include <vector>
#include <algorithm> //标准算法头文件
void print(int value)
{
cout << value << endl;
}
//迭代器使用
int main()
{
verctor<int> v; //int类型容器
//尾加数据
v.push_back(10);
v.push_back(20);
v.push_back(30);
//通过迭代器访问容器中的数据
//遍历一
vector<int>::iterator itBegin = v.begin(); //起始迭代器,指向第一个元素
vector<int>::iterator itEnd = v.end(); //结束迭代器,指向最后元素的下一个
while(itBegin != itEnd)
{
cout << *itBegin << endl;
itBegin++;
}
//遍历二
for(vector<int>::iterator it = = v.begin();it!=v.end();it++)
cout << *it << endl;
//遍历三 STL提供的遍历算法
for_each(v.begin(),v.end(),print); //print() 回调机制
system("pause");
return 0;
}
4.仿函数:行为类似函数,可作为算法的某种策略
5.适配器:一种用于修饰容器或仿函数或迭代器接口
6.空间配置器:负责空间的配置与管理