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

Метод resize_with

Метод resize_with изменяет длину вектора до указанного значения. Если новая длина больше текущей, вектор дополняется элементами, которые создаются с помощью замыкания. Если новая длина меньше текущей, лишние элементы удаляются. Первым параметром метод принимает новую длину вектора, а вторым - замыкание, которое вызывается для создания каждого нового элемента.

Синтаксис

vec.resize_with(new_len, f)

Пример

Давайте увеличим длину вектора с 5 до 8, создавая новые элементы с помощью замыкания:

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

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

[1, 2, 3, 4, 5, 0, 0, 0]

Пример

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

fn main() { let mut vec = vec![1, 2, 3]; let mut counter = 10; vec.resize_with(6, || { counter += 1; counter }); println!("{:?}", vec); }

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

[1, 2, 3, 11, 12, 13]

Пример

Давайте уменьшим длину вектора с 5 до 3. Замыкание при этом не вызывается:

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

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

[1, 2, 3]

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

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