例如 [[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])));
如果您需要使用比较函数而不是键函数进行排序(例如,由于后者的 limitations when returning references ),可以使用 Ordering::then_with()
很好地表达比较器:
v.sort_by(|a, b| a[0].cmp(&b[0]).then_with(|| b[1].cmp(&a[1])));
关于rust - Vec<Vec<i32>> 按第一个元素升序排序,当第一个元素相等时按第二个元素降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69325317/