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

Метод swap_remove

Метод swap_remove удаляет элемент из вектора по указанному индексу. В отличие от метода remove, который сдвигает все последующие элементы влево, swap_remove заменяет удаляемый элемент последним элементом вектора, а затем уменьшает длину вектора на единицу. Параметром метод принимает индекс элемента, который нужно удалить. Метод возвращает удалённый элемент.

Такой подход позволяет выполнить удаление за константное время O(1), тогда как remove работает за линейное время O(n). Однако следует учитывать, что порядок элементов в векторе после вызова swap_remove может измениться.

Метод паникует, если переданный индекс выходит за пределы вектора.

Синтаксис

vec.swap_remove(index)

Пример

Давайте удалим элемент с индексом 1 из вектора vec![1, 2, 3, 4, 5]:

fn main() { let mut vec = vec![1, 2, 3, 4, 5]; let res = vec.swap_remove(1); println!("Removed: {}", res); println!("{:?}", vec); }

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

Removed: 2 [1, 5, 3, 4]

Как видно из результата, элемент 2 был удалён, а на его место встал последний элемент вектора - 5.

Пример

Давайте удалим последний элемент вектора vec!["a", "b", "c", "d", "e"]:

fn main() { let mut vec = vec!["a", "b", "c", "d", "e"]; let res = vec.swap_remove(4); println!("Removed: {}", res); println!("{:?}", vec); }

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

Removed: e ["a", "b", "c", "d"]

Если удаляется последний элемент, то вектор просто уменьшается на один элемент, и порядок остальных элементов не меняется.

Пример

Давайте удалим элемент с индексом 0 из вектора vec![1, 2, 3, 4, 5]:

fn main() { let mut vec = vec![1, 2, 3, 4, 5]; let res = vec.swap_remove(0); println!("Removed: {}", res); println!("{:?}", vec); }

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

Removed: 1 [5, 2, 3, 4]

Первый элемент 1 был удалён, а его место занял последний элемент 5.

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

  • метод remove,
    который удаляет элемент по индексу со сдвигом элементов
  • метод pop,
    который удаляет последний элемент вектора
  • метод insert,
    который вставляет элемент по указанному индексу
  • метод get,
    который возвращает ссылку на элемент по индексу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить