C++标准模板库
C++ Standard Template Libarary
STL组件
容器(Container)——管理某类对象的集合
迭代器(Iterator)——在对象集合上进行遍历
算法(Algorithm)——处理集合内的元素
容器适配器(container adapter)
函数对象(functor)
STL容器元素的条件
1.必须能够通过拷贝构造函数进行复制
2.必须能够通过赋值运算符完成赋值操作
3.必须能够通过析构函数完成销毁工作
4.序列式容器元素的默认构造函数必须可用
5.默写动作必须定义operator==,例如搜寻操作
6.关联式容器必须定义出排序准则,默认情况下是重载operator<
对于基本数据类型(int,long,char,double,...)而言,以上条件总是满足
STL容器的共同操作
1.赋值(assignment)和交换(swap)
(swap)用于提高赋值操作效率
2.与迭代器(iterator)相关的操作
begin()——返回一个迭代器,指向第一个元素
endl()——返回一个迭代器,指向最后一个元素之后
rebegin()——返回一个逆向迭代器,指向逆向遍历的第一个元素
rend()——返回一个逆向迭代器,指向逆向遍历的最后一个元素之后
3.元素操作
insert(pos,e)——将元素e的拷贝安插于迭代器pos所指的位置
erase(beg,end)——移除[beg,end]区间内的所有元素
clear()——移除所有元素
vector
1.vector模拟动态数组
2.vector的元素可以是任意类型T,但必须具备赋值和拷贝能力(具有public拷贝构造函数和重载的赋值操作符)
3.必须包含的头文件#include<vector>
4.vector支持随机存储
5.vector的大小(size)和容量(capacity)
size返回实际元素个数
capacity返回vector能容纳的元素最大数量。如果插入元素时,元素个数超过capacity,需要重新配置内部存储器。
map/multimap
1.使用平衡二叉树管理元素
2.元素包含两部分(key,value),key和value可以是任意类型
3.根据元素的key自动对元素排序,因此根据元素的key