标准库中有哪些容器?分别有什么特点?
标准库中的容器主要分为三类:顺序容器、关联容器、容器适配器。
- 顺序容器包括五种类型:
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>优先队列。