#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
/*自定义比较函数*/
bool sort_cmp(const int& a, const int& b){
return a < b; // 默认从小到大
}
struct queue_cmp{
bool operator()(const int& a, const int& b){
return a < b; // 默认大根堆
}
};
int main(){
vector<int> a{2,5,1,3,7,6,4};
/*sort*/
// sort(a.begin(), a.end()); // 默认从小到大排序
// sort(a.begin(), a.end(), less<int>()); // 默认从小到大排序
// sort(a.begin(), a.end(), greater<int>()); // 从大到小排序
sort(a.begin(), a.end(), sort_cmp); // 自定义比较函数
/*优先级队列,比较函数的作用和 sort 相反,且不需要圆括号,自定义比较函数的方法也不一样*/
// priority_queue<int> q; // 默认大根堆
// priority_queue<int, vector<int>, less<int> > q; // 默认大根堆
// priority_queue<int, vector<int>, greater<int> > q; // 小根堆
priority_queue<int, vector<int>, queue_cmp> q; // 自定义比较函数
for(int i = 0; i < a.size(); i++){
q.push(a[i]);
}
// 打印 sort 之后的 vector
for(int i = 0; i < a.size(); i++){
cout << a[i] << " ";
}
cout << endl;
// 打印 priority_queue
while(!q.empty()){
cout << q.top() << " ";
q.pop();
}
cout << endl;
/* 默认情况下的输出
* 1 2 3 4 5 6 7
* 7 6 5 4 3 2 1
*/
return 0;
}
【C++】sort 和 priority_queue 中的比较函数
最新推荐文章于 2024-02-15 17:53:01 发布