STL容器
| 容器 | 类型 | 特点 |
|---|---|---|
| vector | 序列容器:动态数组 | 元素连续,容量会自动收缩和扩张 |
| deque | 序列容器:双端队列 | 分段数组实现 |
| list | 关联容器:双向链表 | 双向链表实现 |
| set | 关联容器:集合 | 红黑树实现;元素有序,不重复 |
| map | 关联容器:键值对 | |
| multiset | 集合 | 允许重复元素 |
| multimap | ||
| unordered_set | 集合 | 散列实现 |
| unordered_map | 键值对 | 散列实现 |
deque<Key>
顺序的双端队列
实现方式是:多个顺序表
unordered_set<Key, Hasher, Equal>
这是一个通过散列实现的集合容器,元素不能重复。可以自己提供散列函数和比较函数。
通过仿函数提供散列方法和比较方法:Hasher和Equal
struct Hasher {int operator()(const char c) {return c - 'a';}};
迭代器
以vector为例
在循环中删除迭代器指向的元素
vector<int> a = { 0, 1, 2, 3, 4, 5 };for (auto it = a.begin(); it != a.end();) {if (*it == 3) {it = a.erease(it);}else {++it;}}
