标准库中有哪些容器?分别有什么特点?
标准库中的容器主要分为三类:顺序容器、关联容器、容器适配器。
- 顺序容器包括五种类型:
array<T, N>
数组:固定大小数组,支持快速随机访问,但不能插入或删除元素;vector<T>
动态数组:支持快速随机访问,尾位插入和删除的速度很快;deque<T>
双向队列:支持快速随机访问,首尾位置插入和删除的速度很快;(可以看作是vector
的增强版,与vector
相比,可以快速地在首位插入和删除元素)list<T>
双向链表:只支持双向顺序访问,任何位置插入和删除的速度都很快;forward_list<T>
单向链表:只支持单向顺序访问,任何位置插入和删除的速度都很快。
- 关联容器包含两种类型:
- map容器:
map<K, T>
关联数组:用于保存关键字-值对;multimap<K, T>
:关键字可重复出现的map
;unordered_map<K, T>
:用哈希函数组织的map
;unordered_multimap<K, T>
:关键词可重复出现的unordered_map
;- set容器:
set<T>
:只保存关键字;multiset<T>
:关键字可重复出现的set
;unordered_set<T>
:用哈希函数组织的set
;unordered_multiset<T>
:关键词可重复出现的unordered_set
;
- 容器适配器包含三种类型:
stack<T>
栈、queue<T>
队列、priority_queue<T>
优先队列。