C++ priority_queue用法总结

发布时间:2024年01月08日

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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。