STL(Standard Template Library),即标准模板库,该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法,C++标准模板库的核心包括以下组件:
组件 描述
容器(Container) —— 用来管理某一类对象的集合。c++提供了各种不同类型的容器
如:deque、list、vector、map等。
迭代器(Iterator) —— 用于遍历对象集合的元素。
算法(Algorithm) —— 处理集合内的元素。它们提供了执行各种操作的方式,
如:对容器的内容执行初始化、排序、搜索和转换等。
一.容器概述:
(1)顺序容器
将单一类型元素聚集起来成为容器,然后根据位置
来储存和访问这些元素。(vector)
vector: 后部插入\删除,直接接访问。
deque: 前\后部插入\删除,直接访问。
list: 双向链表,任意位置插入\删除。
(2)关联容器
支持通过键来高效的查找和读取元素(map和set)
set: 快速查找,无重复元素。
multiset: 快速查找,可有重复元素。
map: 一对一映射,无重复元素,基于关键字查找。
multimap:一对一映射,可有重复元素,基于关键字查找。
(3)容器适配器(关联容器)
stack: LIFO(后进先出)
queue: FIFO(先进先出)
2.STL容器的共同操作
(1)初始化(initialization)
产生一个空容器
std::list<int> l;
以另一个容器元素为初值完成初始化
Std::list<int> l;
…
std::vector<float>c(l.begin(),l.end());
以数组元素为初值完成初始化
int array[]={2,4,6,1345};
…
std::set<int>c(array,array+sizeof(array)/sizeof(array[0]));
(2)与大小相关的操作(size operator)
size()-返回当前容器的元素数量
empty()-判断容器是否为空
max_size()-返回容器能容纳的最大元素数量
(3)比较(comparison)
==,!=,<,<=,>,>=
比较操作两端的容器必须属于同一类型
如果两个容器内的所有元素按序相等,那么这两个容器相等
采用字典式顺序判断某个容器是否小于另一个容器
(4)赋值和交换
swap用于提高赋值操作效率
(5)与迭代器相关的操作
begin()-返回一个迭代器,指向第一个元素
end()-返回一个迭代器,指向最后一个元素之后
rbegin()-返回一个逆向迭代器,指向逆向遍历的第一个元素
rend()-返回一个逆向迭代器,指向逆向遍历的最后一个元素之后
(6)元素操作
insert(pos,e)-将元素e的拷贝安插于迭代器pos所指的位置
erase(beg,end)-移除[beg,end]区间内的所有元素
clear()-移除所有元素
二.迭代器:
可遍历STL容器内全部或部分元素的对象。
指出容器中的一个特定位置。
迭代器的分类:
(1)双向迭代器
可以双向行进,以递增运算前进或以递减运算后退、可以用&#