STL(标准模板库),就是容器+算法+迭代器。
其中容器可以存放基本类型的变量,也可以存放对象,算法就是对容器的数据进行一些处理,例如排序、查找、插入等算法。迭代器是对链接容器与算法的桥梁,迭代器可以指向容器中的某个元素,可以对容器的元素进行一些算法操作。
c++中,容器分为顺序容器和关联容器,顺序容器中的元素的位置与值的大小无关,在内存中是顺序存储的。可以指定插入元素的位置。关联容器内的元素是按元素值得大小进行排好序的,在插入和删除的时候,不能指定位置。
顺序容器包括:vector(动态数组),deque(双端队列),list(双向链表);
关联容器包括:map,multima,set,multiset
除了以上两类容器外,STL 还在两类容器的基础上屏蔽一部分功能,突出或增加另一部分功能,实现了三种容器适配器:栈 stack、队列 queue、优先级队列 priority_queue。
在这里主要总结vector的用法:
Vector:是一种顺序容器,是一种可变长度的动态数组,可以通过下标访问vector的元素,支持随机访问,所以对vector进行访问的时间复杂度是一个常数。插入和删除元素的时候,需要移动多个元素,平均花费的时间与元素个数是有关的。在尾部进行插入的时候,如果vector有空间来存放新的元素,直接进行插入操作就可以,如果vector已经用完空间,再进行尾部插入的时候,需要重新申请更大空间的内存,将原来的元素复制过去后再添加新的元素。
在使用vector需要添加头文件:<vector>
<