priority_queue
时间: 2023-08-27 12:14:17 浏览: 65
priority_queue是C++标准库中的一个容器适配器,用于实现优先队列。它与队列的主要区别在于,优先队列中的元素按照一定的优先级进行排序,每次取出的元素都是优先级最高的元素。
在priority_queue中,可以使用push()函数将元素插入队列,使用top()函数获取队首元素,使用pop()函数将队首元素出队。可以使用empty()函数判断队列是否为空,使用size()函数获取队列中的元素个数。
在priority_queue中,可以指定一个比较类作为第三个参数,来定义元素的优先级比较规则。如果不指定比较类,默认情况下使用less<int>,表示数字大的优先级越大。如果指定比较类为greater<int>,则表示数字小的优先级越大。
此外,priority_queue也可以存储自定义类型的元素。可以通过重载自定义类型的比较运算符,来定义元素的优先级比较规则。
以下是一个示例代码,演示了priority_queue的用法和存储自定义类型元素的示例:
```cpp
#include <iostream>
#include <queue>
using namespace std;
// 自定义类型
struct Person {
string name;
int age;
};
// 重载比较运算符
bool operator<(const Person& p1, const Person& p2) {
return p1.age < p2.age;
}
int main() {
// priority_queue存储自定义类型元素
priority_queue<Person> q;
// 插入元素
q.push({"Alice", 25});
q.push({"Bob", 30});
q.push({"Charlie", 20});
// 获取队首元素
Person p = q.top();
cout << "Name: " << p.name << ", Age: " << p.age << endl;
return 0;
}
```
以上代码示例了如何使用priority_queue存储自定义类型的元素,并通过重载比较运算符来定义元素的优先级比较规则。在这个示例中,存储的是Person类型的元素,通过比较年龄来确定优先级。输出结果将会是年龄最大的人的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [priority_queue 的常见用法详解](https://blog.csdn.net/weixin_52914088/article/details/119718611)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *3* [C++ 优先队列 priority_queue 使用篇](https://blog.csdn.net/weixin_57761086/article/details/126802156)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]