C++ priority_queue用法总结
2024-01-07 23:07:09
std::priority_queue
是 C++ 标准模板库(STL)中的容器适配器,它提供了优先队列(priority queue)的功能。优先队列是一种特殊的队列,其中的元素按照一定的优先级顺序进行排序。以下是 std::priority_queue
的用法总结:
包含头文件:
#include <queue>
创建 std::priority_queue
对象:
std::priority_queue<ElementType> myPriorityQueue;
ElementType
是优先队列中元素的类型。
插入元素到优先队列:
myPriorityQueue.push(element);
弹出优先队列中的顶部元素:
myPriorityQueue.pop();
获取优先队列中的顶部元素:
ElementType topElement = myPriorityQueue.top();
获取优先队列的大小:
size_t size = myPriorityQueue.size();
自定义比较函数(可选):
如果元素类型不支持 <
操作符,或者你希望使用自定义的比较规则,可以通过提供比较函数来初始化 std::priority_queue
。例如,使用 lambda 函数来定义比较规则:
std::priority_queue<int, std::vector<int>, std::greater<int>> myMinPriorityQueue;
这样创建的是最小堆,元素按照升序排序。
示例:
#include <iostream>
#include <queue>
int main() {
std::priority_queue<int> myPriorityQueue;
// 插入元素
myPriorityQueue.push(30);
myPriorityQueue.push(10);
myPriorityQueue.push(20);
// 获取优先队列的大小
std::cout << "Priority queue size: " << myPriorityQueue.size() << std::endl;
// 获取顶部元素
std::cout << "Top element: " << myPriorityQueue.top() << std::endl;
// 弹出顶部元素
myPriorityQueue.pop();
// 遍历优先队列(注意:没有迭代器,需要不断弹出元素直至为空)
while (!myPriorityQueue.empty()) {
std::cout << myPriorityQueue.top() << " ";
myPriorityQueue.pop();
}
std::cout << std::endl;
return 0;
}
这是一个简单的使用 std::priority_queue
的例子。优先队列常用于实现一些需要按照优先级处理元素的场景,例如任务调度、图算法等。
文章来源:https://blog.csdn.net/weixin_45055461/article/details/135441374
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!