STL容器vector、list、deque、map、set、hashmap
(1) vector 向量
相当于一个数组,占用一块连续的内存空间。
- 优点:
- 可以不指定数组大小。即可以像数组一样操作,且具有动态长度,主要体现在
push_back()
和pop_back()
; - 随机访问方便。支持下标操作符[]和.at();
- 节省空间。每个位置仅保存值对象,没有其他内容(指针等)。
- 缺点:
- 内部的插入和删除操作效率低。可能会涉及到该位置之后的一系列内容的移动;
- 只能在vector的最后进行push和pop操作,不能在vector的头部进行push和pop操作;
- 当动态添加的数据超过vector当前分配的容量capacity时,需要重新申请一块更大的内存,并将vector的内容拷贝到新的内存,释放原内存。
- 适用场景:
如果需要高效的随机存取,不在乎插入/删除的效率或者插入/删除的操作极少时,可使用vector。
(2) list 双向链表
list每个节点都由一个value,一个前驱指针和一个后驱指针组成。
- 优点: