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

Метод min_by

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

Функция-компаратор должна возвращать: Ordering::Less, если первый элемент меньше второго, Ordering::Equal, если элементы равны, Ordering::Greater, если первый элемент больше второго.

Синтаксис

iter.min_by(|a, b| a.cmp(b))

Пример

Давайте найдём минимальный элемент вектора vec![3, 1, 4, 1, 5, 9] с помощью функции-компаратора:

fn main() { let res = vec![3, 1, 4, 1, 5, 9].iter().min_by(|a, b| a.cmp(b)); println!("{:?}", res); }

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

Some(1)

Пример

Давайте найдём минимальный элемент по длине строк в векторе vec!["abcde", "abc", "abcd", "ab"]:

fn main() { let res = vec!["abcde", "abc", "abcd", "ab"] .iter() .min_by(|a, b| a.len().cmp(&b.len())); println!("{:?}", res); }

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

Some("ab")

Пример

Давайте применим min_by к пустому итератору и посмотрим на результат:

fn main() { let res: Option<&i32> = Vec::<i32>::new() .iter() .min_by(|a, b| a.cmp(b)); println!("{:?}", res); }

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

None

Пример

Давайте найдём минимальный элемент с помощью обратного компаратора - фактически это будет максимум:

fn main() { let res = vec![3, 1, 4, 1, 5, 9] .iter() .min_by(|a, b| b.cmp(a)); println!("{:?}", res); }

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

Some(9)

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

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