STL C++ 常用容器
1. 序列式容器(Sequence Containers)
vector
- 概述: 动态数组,可以自动扩展大小。
- 常用操作:
size()
: 返回元素个数。empty()
: 判断是否为空。clear()
: 清空所有元素。push_back()
: 在末尾添加元素。pop_back()
: 删除末尾元素。front()
: 返回第一个元素。back()
: 返回最后一个元素。begin()
,end()
: 返回迭代器。operator[]
: 访问元素。
deque
- 概述: 双端队列,可以在两端进行快速插入和删除。
- 常用操作:
size()
empty()
clear()
front()
,back()
push_back()
,pop_back()
push_front()
,pop_front()
begin()
,end()
list
- 概述: 双向链表,允许在常数时间内进行插入和删除操作。
- 常用操作:
size()
empty()
clear()
push_back()
,pop_back()
push_front()
,pop_front()
front()
,back()
begin()
,end()
2. 关联式容器(Associative Containers)
set
- 概述: 有序集合,存储唯一元素,内部实现为红黑树。
- 常用操作:
insert()
: 插入元素。erase()
: 删除元素。find()
: 查找元素。count()
: 返回某元素出现的次数。lower_bound()
,upper_bound()
: 获取范围的迭代器。size()
,empty()
,clear()
,begin()
,end()
map
- 概述: 有序映射,存储键值对,键唯一,内部实现为红黑树。
- 常用操作:
insert()
: 插入键值对。erase()
: 删除键值对。find()
: 查找键。operator[]
: 访问/插入值。size()
,empty()
,clear()
,begin()
,end()
lower_bound()
,upper_bound()
multiset
- 概述: 允许重复元素的有序集合。
- 常用操作: 与
set
相同。
multimap
- 概述: 允许重复键的有序映射。
- 常用操作: 与
map
相同。
unordered_set
- 概述: 无序集合,使用哈希表实现。
- 常用操作:
insert()
erase()
find()
count()
size()
,empty()
,clear()
,begin()
,end()
unordered_map
- 概述: 无序映射,使用哈希表实现。
- 常用操作: 与
unordered_set
相同。
unordered_multiset
- 概述: 允许重复元素的无序集合。
- 常用操作: 与
unordered_set
相同。
unordered_multimap
- 概述: 允许重复键的无序映射。
- 常用操作: 与
unordered_map
相同。
3. 容器适配器(Container Adapters)
stack
- 概述: 栈,后进先出(LIFO)。
- 常用操作:
push()
: 压入栈顶元素。pop()
: 弹出栈顶元素。top()
: 返回栈顶元素。size()
,empty()
queue
- 概述: 队列,先进先出(FIFO)。
- 常用操作:
push()
: 插入队尾元素。pop()
: 弹出队头元素。front()
: 返回队头元素。back()
: 返回队尾元素。size()
,empty()
priority_queue
- 概述: 优先队列,默认大根堆。
- 常用操作:
push()
: 插入元素。pop()
: 弹出堆顶元素。top()
: 返回堆顶元素。size()
,empty()
- 小根堆:
priority_queue<int, vector<int>, greater<int>> q;
4. 其他
bitset
- 概述: 位集,用于高效存储和操作位。
- 常用操作:
bitset<N> b
set()
,reset()
,flip()
any()
,none()
count()
operator[]
: 访问位
pair
- 概述: 存储两个值的组合。
- 常用操作:
first
: 第一个值second
: 第二个值- 支持比较运算
string
- 概述: 字符串容器。
- 常用操作:
size()
,length()
empty()
,clear()
substr()
: 子串c_str()
: C风格字符串