STL - 容器 - 易忘点整理
容器 | 易忘点 | 备注 |
---|---|---|
list | 1.获取首位元素的引用:front()和back() 2.assign()代替原来list中的内容 3.push、pop操作:push_back()、push_front()、pop_back()、pop_front() 4.增删操作:insert()、erase() | 没有下标操作 |
deque | 同list | 允许下标操作 |
stack | 常用操作:push、pop、top | |
queue | 常用操作:push、pop、back、front | |
set | 常用操作:insert、erase | set通过特定顺序(递增或递减)来保存数据,数据不可重复 |
multiset | 同set | multiset通过特定顺序(递增或递减)来保存数据,数据可重复 |
map | 基础操作同set,不过多了一个下标取值,index为键,返回值 | 键key唯一 |
multimap | 基础操作同set,没有了下标取值 | 键key不唯一 |
STL - 容器 - 底层实现
容器 | 底层实现 | 备份 |
---|---|---|
vector | 底层数据结构为数组 ,支持快速随机访问 | 如果需要高效的随机存取,而不在乎插入和删除的效率,使用vector |
list | 底层数据结构为双向链表,支持快速增删 | 如果需要大量的插入和删除,而不关心随即存取,则应使用list |
deque | 底层数据结构为一个中央控制器和多个缓冲区(类似list和vector的结合体),支持首尾(中间不能)快速增删,也支持随机访问 | 如果需要随机存取,而且关心两端数据的插入和删除,则应使用deque |
stack | 底层一般用list或deque实现 | 不用vector的原因应该是容量大小有限制,扩容耗时 |
queue | 底层一般用list或deque实现 | 不用vector的原因应该是容量大小有限制,扩容耗时 |
set | 底层数据结构为红黑树,有序,不重复 | |
multiset | 底层数据结构为红黑树,有序,可重复 | |
map | 底层数据结构为红黑树,有序,不重复 | |
multimap | 底层数据结构为红黑树,有序,可重复 | |
hash_set | 底层数据结构为hash表,无序,不重复 | |
hash_multiset | 底层数据结构为hash表,无序,可重复 | |
hash_map | 底层数据结构为hash表,无序,不重复 | |
hash_multimap | 底层数据结构为hash表,无序,可重复 |