概述
在 C++ 编程中,数据结构是高效处理和组织数据的关键工具。优先队列(Priority Queue)是一种特殊的队列,元素按优先级排序而非先进先出。优先级最高的元素总是位于队首。
什么是优先队列
优先队列中的元素根据'重要程度'标签排队。例如在医院急诊室,重伤病人比轻伤病人更优先得到救治。它是一种数据结构,元素们按照自己的优先级排队,优先级最高的元素总是站在队伍的最前面,等着被处理。
C++ 中的使用方式
自定义规则
默认情况下,优先队列遵循'选大'规则(最大堆)。如果需要自定义规则,可以使用比较函数或函数对象。
创建一个小顶堆,让最小的数在队首:
#include <iostream>
#include <queue>
struct Compare {
bool operator()(int a, int b) {
return a > b;
}
};
int main() {
std::priority_queue<int, std::vector<int>, Compare> pq;
pq.push(5);
pq.push(10);
pq.push(3);
std::cout << "队首元素(最小值): " << pq.top() << std::endl;
pq.pop();
std::cout << "队首元素(最小值): " << pq.top() << std::endl;
return 0;
}
标准模板库(STL)
C++ 的 STL 提供了 priority_queue 类。使用前需包含 <queue> 头文件。
#include <iostream>
#include
{
std::priority_queue<> pq;
pq.();
pq.();
pq.();
std::cout << << pq.() << std::endl;
pq.();
std::cout << << pq.() << std::endl;
;
}


