STL(standard template library)提供了一组表示容器,迭代器,函数对象和算法的模板。容器是一个与数组相似的单元,能够存若干个值。 node
STL容器是同质的,即存储的值的类型相同;算法是完成特定任务的处方;迭代器是可以用来遍历容器的对象,与可以遍历数组的指针相似,是广义指针;函数对象是相似于函数的对象,能够是类对象或函数指针(包括函数名,由于函数名被用做指针)。 算法
STL不是面向对象编程,而是一种不一样的编程模式-通用编程模式(generic programming)。 编程
1. 慎重选择容器类型 数组
基于算法复杂性考虑: 数据结构
vector是默认应使用的序列类型;当须要频繁地在序列中间作插入和删除操做时,应使用list;当大多数插入和删除操做发生在序列的头部和尾部时,deque是应考虑的数据结构。 函数
STL一种分类方法:连续内存容器(contiguous-memory container)和 基于节点的容器(node-based container)。 spa
2. vector 指针
vector是一个可以存听任意类型的动态数组,可以增长和压缩数据。 对象
使用说明: 索引
使用vector前,必须包含头文件<vector>
例: vector<int> vec;
操做:vec.size() //容器实际数据的个数
vec.begin()//指向迭代器中的第一个数据地址
vec.capacity() //返回容器中数据的个数
vec.empty() //判断容器是否为空
vec.front() //返回第一个数据
vec.push_back(element) //在尾部加入一个元素
vec.pop_back(element) //删除最后一个数据
vec.end() //指向迭代器中末端的下一个,指向不存在元素
3. deque
是一种具备队列和栈的性质的数据结构。
4. list
5. iterator
iterator(迭代器) 是一种对象,它可以用爱遍历标准模板库容器中的部分或所有元素,每一个迭代器对象表明容器中的肯定地址。迭代器修改了常规指针的接口。
6. 容器的共通能力
全部容器提供都是value语义,而非reference。容器执行插入元素的操做时,内部实施拷贝动做。因此STL容器内存储的元素必须可以被拷贝(必须提供拷贝构造函数)。
每一个容器都提供可返回迭代器的函数,运用返回的迭代器就能够访问元素。
一般STL不会丢出异常。要求使用运行者对确保传入正确的参数。
7. 容器的共通操做
1) 与大小相关的操做函数
c.size() 传回容器中的元素数量
c.empty() 判断容器是否为空
c.max_size() 传回元素最大可能数量
2)返回迭代器的函数
c.begin()
c.end()
c.rbegin() 返回一个逆向迭代器,指向逆向寻访时的第一元素
c.rend()