РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
672 of 1245 menu

Метод min_by_key

Метод min_by_key возвращает минимальный элемент итератора, сравнивая элементы не напрямую, а по ключу, который вычисляется с помощью переданной функции. Параметром метод принимает функцию, которая получает ссылку на элемент и возвращает значение ключа, по которому будет производиться сравнение.

Метод возвращает Option: Some с минимальным элементом, если итератор не пуст, и None в противном случае. Если несколько элементов имеют одинаковый минимальный ключ, метод вернёт первый из них.

Синтаксис

iter.min_by_key(|item| key)

Пример

Давайте найдём строку с наименьшей длиной в векторе строк:

fn main() { let vec = vec!["abcde", "ab", "abc", "a"]; let res = vec.iter().min_by_key(|s| s.len()); println!("{:?}", res); }

Результат выполнения кода:

Some("a")

Пример

Давайте найдём число с минимальным квадратом в векторе чисел:

fn main() { let vec = vec![3, -5, 2, -1, 4]; let res = vec.iter().min_by_key(|x| x * x); println!("{:?}", res); }

Результат выполнения кода:

Some(-1)

Пример

Давайте найдём кортеж с минимальным вторым элементом:

fn main() { let vec = vec![(1, 5), (2, 3), (3, 8), (4, 1)]; let res = vec.iter().min_by_key(|t| t.1); println!("{:?}", res); }

Результат выполнения кода:

Some((4, 1))

Пример

Давайте проверим, что возвращает метод на пустом итераторе:

fn main() { let vec: Vec<i32> = vec![]; let res = vec.iter().min_by_key(|x| *x); println!("{:?}", res); }

Результат выполнения кода:

None

Смотрите также

  • метод min,
    который находит минимальный элемент итератора
  • метод max_by_key,
    который находит максимальный элемент по ключу
  • метод min_by,
    который находит минимальный элемент с помощью функции сравнения
  • метод max,
    который находит максимальный элемент итератора
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить