C++中的priority_queue
是一个容器适配器,用于实现优先级队列。优先级队列允许我们在队列中插入元素,并按照元素的优先级进行排序。以下是priority_queue
的一些常用操作:
- 构造函数
std::priority_queuepq; // 创建一个空的优先级队列,存储int类型的元素
- 插入元素
pq.push(5); // 将元素5插入到优先级队列中
- 删除元素
pq.pop(); // 删除优先级最高(默认为最大)的元素
注意:pop()
操作只会删除优先级最高的元素,而不会返回它。如果你想要获取被删除的元素,需要在调用pop()
之前调用top()
。
- 查看优先级最高的元素
int topElement = pq.top(); // 返回优先级最高的元素,但不删除它
- 检查优先级队列是否为空
bool isEmpty = pq.empty(); // 如果优先级队列为空,返回true;否则返回false
- 获取优先级队列的大小
size_t size = pq.size(); // 返回优先级队列中的元素数量
- 比较函数
默认情况下,priority_queue
使用std::less
比较函数对元素进行排序,这意味着优先级最高的元素是最大的。如果你想要改变这种行为,例如使优先级最高的元素成为最小的,你可以提供自定义的比较函数。
std::priority_queue, std::greater > minPQ; // 创建一个优先级队列,优先级最高的元素是最小的
- 其他操作
priority_queue
还支持其他操作,如emplace()
(原地构造元素并插入队列)和swap()
(交换两个优先级队列的内容),但它们的使用场景相对较少。
请注意,priority_queue
不支持随机访问迭代器,因此你不能直接访问队列中的任意元素。如果你需要这样做,可能需要考虑使用其他数据结构,如std::set
或std::multiset
。