Метод sort_by
Метод sort_by сортирует элементы вектора
в порядке, определяемом функцией сравнения.
Параметром метод принимает замыкание, которое
получает два элемента и возвращает Ordering.
Сортировка происходит на месте и изменяет
исходный вектор.
Синтаксис
vec.sort_by(|a, b| a.cmp(b))
Пример
Давайте отсортируем вектор чисел по возрастанию,
используя замыкание с методом cmp:
fn main()
{
let mut vec = vec![3, 1, 4, 2, 5];
vec.sort_by(|a, b| a.cmp(b));
println!("{:?}", vec);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте отсортируем вектор чисел по убыванию,
используя замыкание с методом cmp
в обратном порядке:
fn main()
{
let mut vec = vec![3, 1, 4, 2, 5];
vec.sort_by(|a, b| b.cmp(a));
println!("{:?}", vec);
}
Результат выполнения кода:
[5, 4, 3, 2, 1]
Пример
Давайте отсортируем вектор строк по длине, используя замыкание, сравнивающее длины строк:
fn main()
{
let mut vec = vec!["abcde", "a", "abc", "ab", "abcd"];
vec.sort_by(|a, b| a.len().cmp(&b.len()));
println!("{:?}", vec);
}
Результат выполнения кода:
["a", "ab", "abc", "abcd", "abcde"]
Смотрите также
-
метод
sort,
который сортирует вектор по возрастанию -
метод
sort_by_key,
который сортирует вектор по ключу -
метод
sort_unstable,
который выполняет нестабильную сортировку -
метод
reverse,
который обращает порядок элементов вектора