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
的例子。优先队列常用于实现一些需要按照优先级处理元素的场景,例如任务调度、图算法等。