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

Метод dedup_by

Метод dedup_by удаляет из вектора последовательные повторяющиеся элементы, которые удовлетворяют заданному условию. Метод принимает замыкание, которое получает два аргумента - ссылки на соседние элементы. Если замыкание возвращает true, то второй элемент удаляется. Если false - оба элемента остаются на своих местах. Важно: метод удаляет только соседние элементы, поэтому вектор предварительно нужно отсортировать.

Синтаксис

vec.dedup_by(|a, b| condition)

Пример

Давайте удалим соседние элементы вектора, которые равны по модулю. Сначала отсортируем вектор по абсолютному значению:

fn main() { let mut vec = vec![-1, 1, -2, 2, -3, 3]; vec.sort_by(|a, b| a.abs().cmp(&b.abs())); vec.dedup_by(|a, b| a.abs() == b.abs()); println!("{:?}", vec); }

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

[-1, -2, -3]

Пример

Давайте удалим соседние элементы вектора, длина которых совпадает:

fn main() { let mut vec = vec!["ab", "cd", "efg", "hi", "jkl"]; vec.sort_by(|a, b| a.len().cmp(&b.len())); vec.dedup_by(|a, b| a.len() == b.len()); println!("{:?}", vec); }

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

["ab", "efg"]

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

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