Функция max_by_key
Функция max_by_key возвращает максимальный элемент
итератора. Максимальность определяется не самим элементом,
а ключом, который вычисляется для каждого элемента с помощью
переданной функции. Параметром метод принимает замыкание,
преобразующее элемент в ключ сравнения.
Если несколько элементов имеют одинаковый максимальный ключ,
функция вернёт последний из них. Метод возвращает
Option: Some с максимальным элементом
или None, если итератор пуст.
Синтаксис
iter.max_by_key(key_fn)
где key_fn - замыкание, принимающее элемент
и возвращающее ключ, по которому происходит сравнение.
Пример
Давайте найдём максимальный элемент вектора
vec![1, 2, 3, 4, 5] по ключу, равному самому элементу:
fn main()
{
let res = vec![1, 2, 3, 4, 5].iter().max_by_key(|x| **x);
println!("{:?}", res);
}
Результат выполнения кода:
Some(5)
Пример
Давайте найдём строку с максимальной длиной
в векторе vec!["abcde", "ab", "abc"]:
fn main()
{
let res = vec!["abcde", "ab", "abc"].iter().max_by_key(|s| s.len());
println!("{:?}", res);
}
Результат выполнения кода:
Some("abcde")
Пример
Давайте найдём элемент с максимальным ключом
в векторе пар vec![(1, "a"), (3, "b"), (2, "c")],
где ключом является первый элемент пары:
fn main()
{
let res = vec![(1, "a"), (3, "b"), (2, "c")]
.iter()
.max_by_key(|pair| pair.0);
println!("{:?}", res);
}
Результат выполнения кода:
Some((3, "b"))
Смотрите также
-
функция
max_by_key,
которая возвращает максимальный элемент итератора по ключу -
функция
min_by_key,
которая возвращает минимальный элемент итератора по ключу -
функция
max_by,
которая возвращает максимальный элемент с пользовательским сравнением -
функция
max,
которая возвращает максимальный элемент итератора