C++编程——关于比较器的使用
注:
简单记录一下C++里比较器的构建,常用于自定义 sort() 函数和优先队列的改写优先级。
简单构建比较器:
sort() 函数:
vector<int> arr;//(a, b) -> true : a < b
//升序排列
bool compare(int a, int b) {return a < b;
}sort(arr.begin(), arr.end(), compare);
优先级队列:
//(a, b) -> true : a > b -> b优先级高,即小值优先级高
//排列优先级
struct compare{bool operator()(int a, int b){return a > b;}
};priority_queue<int, vector<int>, compare> queue;
匿名函数构建比较器:
sort() 函数:
vector<int> arr;//(a, b) -> true : a < b
//升序排列
sort(arr.begin(), arr.end(), [](int a, int b){ return a < b });
优先级队列:
// 方法1:使用 lambda 表达式 + decltype
auto cmp = [](int a, int b) { return a > b; };
priority_queue<int, vector<int>, decltype(cmp)> queue1(cmp);// 方法2:使用 std::function
priority_queue<int, vector<int>, function<bool(int, int)>> queue2([](int a, int b) {return a > b;
});