STL 对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。
标准STL顺序容器:vector、deque、list、forward_list、array和string.
标准STL关联容器:set、multiset、map和multimap。
标准STL容器适配器:stack、queue、priority_queue。
每个容器定义在一个头文件中文件名与类型名相同。
vector
可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢。
deque
双端队列。支持快速随机访问。在头尾位置插入或删除速度很快。
list
双向链表。支持双向顺序访问。任何位置插入删除操作速度都很快。
forward_list
单向链表。没有.size操作。其迭代器不支持--运算符。操作特殊
array
固定大小数组。但支持整个array的拷贝或对象赋值操作。
string
保存字符。随机访问快。尾部插入或删除快。
操作
push_back
除array和forward_list。将一个元素加入到一个容器的尾部。
push_front
list,forwad_list和deque支持。将元素插入到容器头部
insert
都支持。将元素插入到迭代器所指定位置之前。
.back
返回尾元素的引用。
.front
返回首元素的引用。
删除(array无) 删除元素可能会导致迭代器失效[311,315]
pop_front
删除首元素,返回void
pop_back
删除尾元素,返回void
erase(p)
删除迭代器p所指定的元素,返回指向被删元素之后元素的迭代器
clear
删除所有元素
泛型算法
大多数定义在头文件algorithm中 部分在numeric
迭代器使算法不依赖容器,但算法依赖于元素类型的操作
算法不会执行容器操作,迭代器可以完成向容器添加元素。
网友评论