priority_queue
# priority_queue的介绍
优先级队列默认使用vector
作为其底层存储数据的容器,在vector上又使用了堆算法将vector中的元素构造成堆的结构,因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用priority_queue
默认情况下,priority_queue是大堆
# priority_queue的定义
- 方式一:使用vector作为底层容器,内部构造大堆结构
priority_queue<int, vector<int>, less<int>> q1;
1
- 方式二:使用vector作为底层容器,内部构造小堆结构
priority_queue<int, vector<int>, greater<int>> q2;
1
- 方式三:默认使用vector作为底层容器,默认内部构造大堆结构
priority_queue<int> q;
1
# priority_queue的使用
成员函数 | 函数功能 |
---|---|
push | 插入元素到队尾并排序 |
pop | 弹出队头元素 |
top | 访问队头元素 |
size | 获取队列的有效元素个数 |
empty | 判断队列是否为空 |
swap | 交换两个队列的内容 |
示例:
int main() {
priority_queue<int,vector<int>> p;
p.push(100);
p.push(10);
p.push(22);
p.push(34);
p.push(1);
// 100 34 22 10 1
while(!p.empty()) {
cout << p.top() << " ";
p.pop();
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# priority_queue的模拟实现
上次更新: 2024/10/26, 21:27:03