📜  C++中对的优先级队列(按先排序)(1)

📅  最后修改于: 2023-12-03 15:14:02.082000             🧑  作者: Mango

C++中的优先级队列

在C++中,优先级队列是一个 STL 组件,用于存储和管理一组具有优先级的元素。元素的优先级可以是任何可以相关的数字,例如,一个整形数中的数字、一个浮点型小数中的小数位、一个字符串的长度、一个日期和时间的值等等。优先级队列中的元素会按照优先级从高到低排序,优先级最高的元素排在队列的前面。

优先级队列的定义

在C++中定义优先级队列的方法如下:

#include <queue>

std::priority_queue<int> myQueue;

这种定义方式会创建一个整形数据的优先级队列。我们也可以通过传递一个比较函数的参数来指定队列如何按照优先级来排序:

#include <queue>

bool compare(int a, int b)
{
    /* 建立自己定义的比较方式 */
    return a > b;
}

std::priority_queue<int, std::vector<int>, compare> myQueue;

在这个例子中,我们使用了一个自定义比较函数 compare() 来告诉优先级队列按照升序排列。

优先级队列的常用操作
插入元素

使用push()函数将元素插入到队列中:

myQueue.push(500);
访问队首元素

使用top()函数访问优先级队列的队首元素:

int highestPriority = myQueue.top();
删除队首元素

使用pop()函数从优先级队列中删除队首元素:

myQueue.pop();
获取队列中元素的数量

使用size()函数获取优先级队列中的元素数量:

int n = myQueue.size();
检查队列是否为空

使用empty()函数检查优先级队列是否为空:

if (myQueue.empty())
{
    std::cout << "The queue is empty." << std::endl;
}
else
{
    std::cout << "The queue is not empty." << std::endl;
}
总结

优先级队列是一个非常实用的 STL 组件,用于存储和管理一组具有优先级的元素。在C++中,我们可以使用std::priority_queue类来定义优先级队列,并使用其丰富的操作函数来访问、插入和删除队列中的元素。