介绍
STL(standard template library)标准模板库,是一种高效的C++程序库。
STL分为三类:container(容器),iterator(迭代器)和algorithm(算法)。
STL组件
- 容器(Container)——管理某类对象的集合
- 迭代器(Iterator)——在对象集合上进行遍历
- 算法(Algorithm)——处理集合内的元素
- 容器适配器(container adaptor)
- 函数对象(functor)
容器(container)
容器是用来管理某一类对象的集合,包括序列式容器和关联式容器。
序列式容器:vector,list,deque
关联式容器:map,set
遵循规则:
1.所有容器中存放的都是值而非引用。因此容器中的每个元素必须能够被拷贝,如想存放的不是副本,容器元素只能是指针。
2.容器中所有元素都是有次序(order)的,可以进行一次或多次遍历每个元素。
vector
- vector模拟动态数组
- vector的元素可以是任意类型T,但必须具备赋值和拷贝能力
- 必须包含头文件#include< vector >
map/multimap
- 使用平衡二叉树管理元素
- 元素包含两部分(key,value),key和value可以是任意类型
- 必须包含的头文件#include< map >
- 不能直接改变元素的key,可以通过operator[]直接存取元素值
- map中不允许key相同的元素,multimap允许key相同的元素
迭代器(iterators)
迭代器用于遍历对象集合的元素,这些集合可能是容器也可能是容器子集。
所有容器都提供获得迭代器的函数。
begin() 返回一个迭代器,指向第一个元素
end() 返回一个迭代器,指向最后一个元素
算法(algorithm)
算法作用于容器,包括对容器内容进行初始化,排序,搜索和转换等操作。
STL算法分为四类:
1.非可变序列算法:不直接修改容器中内容。
2.可变序列算法:可以直接修改容器的内容。
3.排序算法:包含对序列的排序,合并,搜索和对有序序列的操作等算法。
4.数值算法:对容器内容计算。