一.STL
STL(Standard Template Library),即标准模板库,是C++的程序库。
STL的六大组件
- 容器(Container),是一种数据结构,如list,vector,deques,以模板类的方法提供。为了访问容器中的数据,可以使用容器类输出的迭代器。
- 迭代器(Iterator),提供访问容器中对象的方法。如,可以使用一对迭代器指定list或vector中的一定范围的对象。迭代器类似于一个指针,但迭代器也可以是那些定义了operator*()已经其他类似于指针的操作符方法的类对象。
- 算法(Algorithm),是用来操作容器中的数据的模板函数。如sort()排序函数,find()查找函数等。函数本身与操作的数据的结构和类型无关,因此可在从简单数组到高度复杂容器的数据结构都可使用。
- 仿函数(Function object),又称之为函数对象,是重载了()操作符的struct。
- 迭代适配器(Adapror)
- 空间配置器(allocator),主要工作包括 1.对象的创建与销毁 2.内存的获取与释放。
二.vector
vector是一种对象实体,又称之为容器,存储类型相同的元素,与数组的主要区别为它可以根据需要随时自动调整自身的大小以便存储元素。
在元素的输出上,可使用遍历器(迭代器)控制输出。向量元素的位置为遍历器,向量元素的位置也是一种数据结构,在向量中遍历器的类型为:vector< int >::iterator。遍历器也可在容器中前后移动。
向量基本操作
vector<int> a; //初始化
a.size() //获取向量中元素个数
a.empty() //判断向量是否为空
a.clear() //清空向量中的元素
a = b //将b向量复制到a向量中
a.insert(a.begin(),1000); //将1000插入到向量a的起始位置
a.insert(a.begin(),3,1000); //将1000分别插入到向量元素位置的0-2处(共3个元素)
b.swap(a); //a向量与b向量进行交换
三.map
map容器提供的为键值对容器,每一对由关键字(key)和关键字的对应值组成。
插入:
map<int,string> ID_Name;
ID_Name[2015] = "kalp";
//ID_Name.insert(std::map<int,string>(2015,"kalp"));
取值
cout << ID_Name[2015].c_str() <<endl;
//ID_Name.at(2015) = "kalp";
查找
std::map<int,string>::iterator it;
it = ID_Name.find("kalp");