一、基本概念与特性
priority_queue 是 C++ STL 中的容器适配器,基于堆数据结构实现,支持按优先级动态管理元素。其核心特性包括:
- 优先级排序:默认大顶堆(最大元素在堆顶),可通过自定义比较器改为小顶堆。
- 操作限制:仅允许访问堆顶元素(
top()
),不支持遍历和随机访问。 - 底层容器:默认使用
vector
,也可用deque
,需支持push_back()
、pop_back()
和随机访问迭代器 。
二、基本用法
1. 初始化与声明
#include <queue>
#include <functional> // 用于 greater/less
// 默认大顶堆(最大元素在堆顶)
priority_queue<int> max_heap;
// 小顶堆(需显式指定容器和比较器)
priority_queue<int, vector<int&g