自定义的sort, stable_sort,map,set,priority_queue等都需要传入自定义的比较函数
不同的是,sort,statble_sort可以需要传入比较函数或仿函数
map,set,priority_queue需要传入仿函数
在定义自己的比较时,常常容易搞混
对于比较函数,一句话 为true的放在前面
对于priority_queue,大于为小根堆,小于为大根堆
1、sort中比较函数
此外sort中也可以穿仿函数,比方有个仿函数叫 struct cmp {};,但必须传入的是cmp(), 不能直接直接传入cmp
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) //降序排序
{
return a > b; //大于的为true,放前面,因此是由大到小排序
}
bool cmp1(pair<int, int> p1, pair<int, int> p2) //主键降序,主键相同则升序
{
if (p1.first != p2.first)
return p1.first > p2.first;
else
return p1.second < p2.second;
}
int main()
{
vector<int> nums{2, 1, 3, 4, 2, 7};
vector<pair<int, int>> nums2{
{1