priority_queue堆
时间: 2023-10-29 18:55:49 浏览: 91
priority_queue是C++标准库中的容器,它实现了一个堆(heap)。堆是一种特殊的二叉树结构,具有以下特点:
1. 堆是一个完全二叉树,即除了最后一层外,其他层都是满的,最后一层从左到右填充节点。
2. 堆中每个节点的值都满足一种特定的顺序关系,通常是父节点的值大于或小于其子节点的值。
3. 堆中的最大元素(或最小元素)总是位于根节点。
priority_queue提供了一种高效地处理具有优先级的元素集合的方式。其特点是:
1. 它支持在O(log n)的时间复杂度内插入元素和删除堆顶元素。
2. 默认情况下,priority_queue以大顶堆的方式工作,即堆顶元素为最大值。也可以通过自定义比较函数来实现小顶堆。
3. 元素被插入到priority_queue中时,会按照优先级自动进行排序。
以下是一个使用priority_queue的示例代码:
```cpp
#include <iostream>
#include <queue>
int main() {
std::priority_queue<int> pq;
pq.push(3);
pq.push(1);
pq.push(4);
pq.push(1);
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
return 0;
}
```
上述代码创建了一个priority_queue对象pq,并依次插入了元素3、1、4和1。最后,使用循环依次输出堆顶元素并弹出,输出结果为4 3 1 1。
阅读全文