📅  最后修改于: 2023-12-03 14:52:08.309000             🧑  作者: Mango
在C++中,可以使用STL提供的优先级队列(priority_queue)来实现最小优先级队列。下面是一个示例程序,用于创建一对int、int的最小优先级队列。
#include <iostream>
#include <queue>
using namespace std;
int main() {
// 创建一个最小优先级队列
priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
// 向队列中插入元素
pq.push(make_pair(10, 20));
pq.push(make_pair(15, 8));
pq.push(make_pair(5, 9));
// 输出队列中的元素
while (!pq.empty()) {
cout << pq.top().first << ", " << pq.top().second << endl;
pq.pop();
}
return 0;
}
代码说明:
以上程序会输出以下结果:
5, 9
10, 20
15, 8
这是因为我们定义的最小优先级队列是按照第一个int型数据(即pair中的first)从小到大排序的,相同的情况下按照第二个int型数据(即pair中的second)从小到大排序。
注意:对于pair类型的数据,我们可以使用make_pair()函数来创建,它会自动将两个参数封装成一个pair对象。另外,vector容器是优先级队列的底层容器,它用于存储元素,因此我们需要在模板参数中指定为vector<pair<int,int>>。