STL的一些知识点
stack(栈)
后进先出(LIFO)结构,仅允许在栈顶进行插入和删除操作。
常用操作:
push(x)
:将元素x
压入栈顶。pop()
:移除栈顶元素。top()
:返回栈顶元素。empty()
:判断栈是否为空。size()
:返回栈中元素数量。
queue(队列)
先进先出(FIFO)结构,元素从队尾入队,从队首出队。
常用操作:
push(x)
:将x
加入队尾。pop()
:移除队首元素。front()
:返回队首元素。back()
:返回队尾元素。empty()
:判断队列是否为空。size()
:返回队列元素数量。
deque(双端队列)
支持在两端高效插入和删除的线性结构。
常用操作:
push_back(x)
:在队尾插入x
。push_front(x)
:在队首插入x
。pop_back()
:移除队尾元素。pop_front()
:移除队首元素。front()
/back()
:访问队首/队尾元素。empty()
/size()
:判断空或返回大小。- 优势:随机访问效率高(
O(1)
),适合滑动窗口问题。
map(映射)
- 基于红黑树的有序键值对容器,键唯一且自动排序。
常用操作:
insert({key, value})
:插入键值对。erase(key)
:删除指定键的元素。find(key)
:查找键,返回迭代器。count(key)
:统计键是否存在(0或1)。lower_bound(key)
:返回第一个不小于key
的迭代器。- 元素:
map[key]
(若键不存在会自动插入默认值)。
set(集合)
存储唯一元素的有序容器,基于红黑树实现。
常用操作:
insert(x)
:插入元素x
。erase(x)
:删除元素x
。find(x)
:查找元素,返回迭代器。count(x)
:判断元素是否存在(0或1)。lower_bound(x)
:返回第一个不小于x
的迭代器。- 应用:去重、维护有序数据。
pair(键值对)
将两个值组合为单一对象,通常用于关联数据。
常用操作:
- 初始化:
pair<T1, T2> p(value1, value2)
。 - 访问成员:
p.first
(第一个元素)、p.second
(第二个元素)。 - 比较操作:按
first
优先,second
次之的顺序比较。
应用:作为map
的键值对、返回多个值(如函数返回值)。