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

Трейт DoubleEndedIterator

Трейт DoubleEndedIterator расширяет возможности обычного итератора Iterator, добавляя возможность получать элементы не только с начала, но и с конца коллекции. Главным методом этого трейта является next_back, который возвращает следующий элемент с конца итератора. Благодаря этому трейту становятся доступны такие методы, как rev, rposition, last и другие. Трейт реализован для большинства стандартных коллекций: векторов, срезов, диапазонов, строк и многих адаптеров итераторов. Важно понимать, что итератор можно перебирать с обоих концов только до тех пор, пока они не встретятся.

Синтаксис

trait DoubleEndedIterator: Iterator { fn next_back(&mut self) -> Option<Self::Item>; }

Пример

Давайте получим элементы с конца вектора при помощи метода next_back:

fn main() { let mut iter = vec![1, 2, 3, 4, 5].into_iter(); println!("{:?}", iter.next_back()); println!("{:?}", iter.next_back()); println!("{:?}", iter.next()); }

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

Some(5) Some(4) Some(1)

Пример

Давайте перевернём вектор при помощи метода rev, который доступен только для двусторонних итераторов:

fn main() { let res: Vec<i32> = vec![1, 2, 3, 4, 5] .into_iter() .rev() .collect(); println!("{:?}", res); }

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

[5, 4, 3, 2, 1]

Пример

Давайте найдём позицию элемента с конца при помощи метода rposition:

fn main() { let res = vec!["a", "b", "c", "d", "e"] .into_iter() .rposition(|x| x == "c"); println!("{:?}", res); }

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

Some(2)

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

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