在C++中,priority_queue
是一个容器适配器,用于实现优先级队列。默认情况下,priority_queue
的元素按照从大到小的顺序排列。如果你想要自定义比较函数,可以通过传递一个自定义的比较对象或者函数指针作为模板参数来实现。
以下是一个使用自定义比较函数的例子:
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
// 自定义比较函数
struct Compare {
bool operator()(const int &a, const int &b) {
return a > b; // 从小到大排序
}
};
int main() {
// 使用自定义比较函数创建优先级队列
priority_queue<int, vector<int>, Compare> pq;
// 向优先级队列中添加元素
pq.push(3);
pq.push(1);
pq.push(4);
pq.push(2);
// 输出优先级队列中的元素
while (!pq.empty()) {
cout << pq.top() << " ";
pq.pop();
}
return 0;
}
输出结果:
1 2 3 4
在这个例子中,我们定义了一个名为Compare
的结构体,它包含一个重载的operator()
函数。这个函数接受两个整数参数,并返回一个布尔值,表示第一个参数是否大于第二个参数。然后我们使用这个自定义比较函数创建一个优先级队列,并向其中添加一些元素。最后,我们输出优先级队列中的元素,可以看到它们按照从小到大的顺序排列。