目录
容器:
容器适配器:
heap——堆(隐式表达) #include<aglorithm>
标准之外:
vector ——顺序表。
概述:vector类似于array,但vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。
迭代器:vector的迭代器是Random Access Iterators,vector迭代器就是普通指针(typedef value_type * iterator)
扩容:当vector扩容时,会发生“重新配置(两倍大小),元素移动,释放空间”等过程。删除时容量不变。
元素操作:对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就会失效。
STL标准规范中指出:插入时,新节点将位于哨兵迭代器的所指节点的前方。
list ——环状双向链表
list的迭代器:双向迭代器,插入和结合不会造成原有的list迭代器失效。删除时只有“指向被删除元素”的迭代器失效。
list的元素操作:remove(const T& value) :移除所有数值为value的元素。
unique() :移除数值连续相同的连续元素,只有连续相同的元素才会被移除,剩下一个。
splice(iterator position,list&x):将x链表接合与position所指位置之前。x必须不同于*this。
transfer(iterator position,iterator first,iterator last):将[first,last)内的元素移动到position之前。(非公开接口)
merge(list& x ):将x合并到*this身上。两个list的内容必须先经过递增排序。
sort():list不能使用STL算法中的sort(),必须使用sort()成员函数。STL算法中的sort()要求随机访问迭代器。
关于sort函数的解析:https://blog.youkuaiyun.com/shoulinjun/article/details/19501811 (STL剖析上写得快排,实际上应该是归并排序)
#include<ios