例如[[5,6][2,3][2,5][2,9][1,6]]
首先按升序排序第一个元素,当一个元素相等时,按降序排序第二个元素,结果为[1,6],[2,9],[2,5],[2,3],[5,6]。
sort_by_key()
函数,传入一个返回元组的键函数作为参数,该元组包含第一个子元素和其后的第二个子元素,并将其封装在 std::cmp::Reverse
中以反转比较:v.sort_by_key(|x| (x[0], Reverse(x[1])));
如果您需要使用比较函数而不是关键字函数进行排序(例如,由于后者在返回引用时存在限制),可以使用Ordering::then_with()
来很好地表达比较器:
v.sort_by(|a, b| a[0].cmp(&b[0]).then_with(|| b[1].cmp(&a[1])));
Reverse
- user2722968