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