auto gt_cmp = [](int lhs, int rhs) { return lhs > rhs; };
auto lt_cmp = [](int lhs, int rhs) { return lhs < rhs; };
vector<int> A;
sort(A.begin(), A.end()); // 升序:默认
sort(A.begin(), A.end(), less<>()); // 升序:库
sort(A.begin(), A.end(), lt_cmp); // 升序:自定义
sort(A.begin(), A.end(), greater<>()); // 降序:库
sort(A.begin(), A.end(), gt_cmp); // 降序:自定义
// multiset、map 同理
set<int> B(A.begin(), A.end()); // 升序:默认
set<int, less<>> B(A.begin(), A.end()); // 升序:库
set<int, decltype(lt_cmp)> B(A.begin(), A.end(), lt_cmp); // 升序:自定义
set<int, greater<>> B(A.begin(), A.end()); // 降序:库
set<int, decltype(lt_cmp)> B(A.begin(), A.end(), lt_cmp); // 降序:自定义
priority_queue<int> C(less<int>(), A); // 大根堆:默认
priority_queue<int, vector<int>, less<>> C(less<>(), A); // 大根堆:库
priority_queue<int, vector<int>, decltype(lt_cmp)> C(lt_cmp, A); // 大根堆:自定义
priority_queue<int, vector<int>, greater<>> C(greater<>(), A); // 小根堆:库
priority_queue<int, vector<int>, decltype(gt_cmp)> C(gt_cmp, A); // 小根堆:自定义