STL是C++标准程序库的核心,深刻影响了标准程序库的整体结构,STL内的所有组件都由模板(template)构成,其元素可以是任意类型。
STL组件:
1容器(Container) - 管理某类对象的集合
2迭代器(Iterator) - 在对象集合上进行遍历
3算法(Algorithm) - 处理集合内的元素
4容器适配器(container adaptor)
5函数对象(functor)
STL容器元素的条件
1必须能够通过拷贝构造函数进行复制
2必须可以通过赋值运算符完成赋值操作
3必须可以通过析构函数完称销毁动作
4序列式容器元素的默认构造函数必须可用
5某些动作必须定义operator ==,例如搜寻操作
6关联式容器必须定义出排序准则,默认情况是重载operator <
对于基本数据类型(int,long,char,double,…)而言,以上条件总是满足。
STL容器的共同能力是所有容器中存放的都是值而非引用。如果希望存放的不是副本,容器元素只能是指针。所有元素都形成一个次序(order),可以按相同的次序一次或多次遍历每个元素。
vector模拟动态数组
vector的元素可以是任意类型T,但必须具备赋值和拷贝能力(具有public拷贝构造函数和重载的赋值操作符)必须包含的头文件#include<vector>vector支持随机存取vector的大小(size)和容量(capacity)size返回实际元素个数,capacity返回vector能容纳的元素最大数量。如果插入元素时,元素个数超过capacity,需要重新配置内部存储器。
关于vector模拟动态数组的操作:vector<T> c,产生空的vector。vector<T> c1(c2),产生同类型的c1,并将复制c2的所有元素。vector<T> c(n,e),产生一个大小为n的vector,每个元素都是e。vector<T> c(n),利用类型T的默认构造函数和拷贝构造函数生成一个大小为n的vector。vector<T> c(beg,end),产生一个vector,以区间[beg,end]为元素初值。~vector<T>(),销毁所有元素并释放内存。c.push_back(e),在尾部添加一个元素e的副本。
Maps/MultimapsMap的元素是成对的键值/实值,内部的元素依据其值自动排序。Map内的相同数值的元素只能出现一次,Multimaps内可包含多个数值相同的元素。内部由二叉树实现,便于查找。
这里的算法很多还不会用,这也是挑着几个重要的操作写的。至于maps的了解还少,后面再联系理解