Метод max_by
Метод max_by возвращает максимальный элемент
итератора. В отличие от метода max, который
сравнивает элементы напрямую, max_by
принимает параметром функцию сравнения, которая
получает два элемента и возвращает значение типа
Ordering. Метод возвращает Some с
максимальным элементом или None, если
итератор пуст.
Синтаксис
iter.max_by(|a, b| a.cmp(b))
Пример
Давайте найдём максимальный элемент вектора
vec![3, 1, 4, 1, 5, 9, 2, 6], используя
функцию сравнения:
fn main()
{
let vec = vec![3, 1, 4, 1, 5, 9, 2, 6];
let res = vec.iter().max_by(|a, b| a.cmp(b));
println!("{:?}", res);
}
Результат выполнения кода:
Some(9)
Пример
Давайте найдём максимальный элемент вектора
vec!["abcde", "12345", "xyz"] по длине строки:
fn main()
{
let vec = vec!["abcde", "12345", "xyz"];
let res = vec.iter().max_by(|a, b| a.len().cmp(&b.len()));
println!("{:?}", res);
}
Результат выполнения кода:
Some("abcde")
Пример
Давайте применим max_by к пустому итератору:
fn main()
{
let vec: Vec<i32> = vec![];
let res = vec.iter().max_by(|a, b| a.cmp(b));
println!("{:?}", res);
}
Результат выполнения кода:
None
Смотрите также
-
метод
max,
который возвращает максимальный элемент итератора -
метод
min_by,
который возвращает минимальный элемент с функцией сравнения -
метод
max_by_key,
который возвращает максимальный элемент по ключу -
метод
reduce,
который сводит элементы итератора к одному значению