priority_queue 优先队列的介绍

priority_queue 是 C++ 标准库中的一个容器适配器,它提供了基于优先级排序的队列操作。在这个示例中,我们将展示如何创建和使用一个优先队列来存储整数,并按升序排序。

首先,我们需要包含 priority_queue 的头文件:

#include
#include
接下来,我们将定义一个 IntCompare 函数,用于自定义优先队列中元素的排序方式。在这个例子中,我们将整数按升序排序:

bool IntCompare(int lhs, int rhs) {
return lhs < rhs;
}
现在,我们可以创建一个使用 IntCompare 函数的优先队列,用于存储整数:

std::priority_queue<int, std::vector, std::less> integerQueue;
在这个例子中,integerQueue 是一个优先队列,它使用 std::vector 作为底层容器,并使用 std::less 作为比较器。这意味着优先队列中的元素将根据它们的值进行升序排序。

接下来,我们将向优先队列添加一些整数:

integerQueue.push(5);
integerQueue.push(10);
integerQueue.push(8);
integerQueue.push(15);
现在,我们可以使用 top() 函数来访问优先队列的顶部元素,并使用 pop() 函数将其移除:

std::cout << "Top element: "<< integerQueue.top()<< std::endl; // 输出:Top element: 5
integerQueue.pop();

std::cout << "Top element again: "<< integerQueue.top()<< std::endl; // 输出:Top element again: 8
integerQueue.pop();
我们可以继续向优先队列添加元素并使用 top() 和 pop() 函数来查看队列中的顶部元素。当队列变空时,我们可以使用这些函数来检查优先队列是否已为空:

std::cout << "Is queue empty? " << (integerQueue.empty() ? “Yes” : “No”)<< std::endl; // 输出:Is queue empty? Yes
这个示例展示了如何创建和使用一个优先队列来存储整数,并按升序排序。你可以根据需要修改示例中的数据类型和排序顺序。