sort自定义比较函数
1.要求:
自定义比较函数必须满足 严格弱序,简单说需遵守 3 条规则:
(1)自反性:comp(a, a) 必须返回 false(自己不能排在自己前面);
(2)非对称性:若 comp(a, b) 为 true,则 comp(b, a) 必须为 false;
(3)传递性:若 comp(a, b) 为 true 且 comp(b, c) 为 true,则 comp(a, c) 必须为 true
违反规则会导致排序行为未定义(崩溃、结果混乱)
2.语法格式:
(1)基本格式:
// 比较两个元素 a 和 b,返回 bool:
// true → a 应该排在 b 前面;false → b 应该排在 a 前面(或位置不变)
bool 函数名(const T& a, const T& b) {
// 自定义比较逻辑
return 比较条件;
}
// 调用 sort 时传入函数名(不加括号!)
sort(容器.begin(), 容器.end(), 函数名);
(2)注意:
①参数必须是从const引用,类型与容器元素一样
自定义比较函数必须满足 严格弱序,简单说需遵守 3 条规则:
(1)自反性:comp(a, a) 必须返回 false(自己不能排在自己前面);
(2)非对称性:若 comp(a, b) 为 true,则 comp(b, a) 必须为 false;
(3)传递性:若 comp(a, b) 为 true 且 comp(b, c) 为 true,则 comp(a, c) 必须为 true
违反规则会导致排序行为未定义(崩溃、结果混乱)
2.语法格式:
(1)基本格式:
// 比较两个元素 a 和 b,返回 bool:
// true → a 应该排在 b 前面;false → b 应该排在 a 前面(或位置不变)
bool 函数名(const T& a, const T& b) {
// 自定义比较逻辑
return 比较条件;
}
// 调用 sort 时传入函数名(不加括号!)
sort(容器.begin(), 容器.end(), 函数名);
(2)注意:
①参数必须是从const引用,类型与容器元素一样
全部评论
相关推荐
点赞 评论 收藏
分享

