STL并非全是标准库,比如string,但也约定俗成为标准库
六大部件:
算法 容器 适配器 迭代器 仿函数 分配器
string :字符串, 可与字符串直接相加进行拼接,查找(find), 插入(insert),截取(substr),替换(replace)
vector :动态数组,扩容大小取决于编译器
stack :栈,基于双端队列的适配器,压入弹出判空栈顶
queue:队列,基于双端队列的适配器,压入弹出头尾判空
deque:双端队列, 内存空间并非连续,但是所有单位空间由一块指针表维护,每次访问队列内的元素时,其实访问的是该指针指向的空间,头尾各压入弹出判空
priority_queue:优先队列,堆存储,操作均为对数级,压入弹出堆顶,默认大顶堆,默认小于号排序,可重载小于号或者封装重载类,小顶堆有封装好的比较类,greater<int>,引入文件<functional>
set : 集合,默认排序去重,通常使用红黑树存储,操作均为对数级,插入删除判空(count)
map:键值对,对:pair<键类,值类>,pair.first/second进行访问,set就是没有值的map(理解)
默认红黑树,根据键排序去重,插入(insert(make_pair)),查找删除
中括号[ ] : 访问键值操作,访问不存在自动插入然后默认初始化,应该避免频繁使用中括号的习惯,因为红黑树每次查找都是O(logn)级,数组下标访问为O(1)级,两者不同应该避免
multiset/map:不去重存储
unorderset/map : 无序存储,哈希表存储,拉链法链式存储
unorder_multiset/map : 不去重无序存储