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;
}
}