11.6 自定義比較函式
greater() 解決了「由大到小」,但排序規則千奇百怪:按絕對值排、按個位數排、偶數優先……這些 sort 都做得到——把你自己寫的比較函式當第三個參數傳進去。
比較函式的規格:
- 恰有兩個參數,型態就是被排序元素的型態;回傳
bool。 - 語意只有一句話:
cmp(x, y)回答「x 是否必須排在 y 前面」。- 必須在前 → 回傳
true。 - x 與 y 相等,或 x 該排在後面 → 回傳
false。
- 必須在前 → 回傳
例如「由大到小」的比較函式,用這句話翻譯:x 比 y 大時,x 必須在前——