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

Метод reserve

Метод reserve резервирует дополнительную ёмкость в векторе Vec, чтобы он мог хранить как минимум additional элементов больше, чем текущая длина. Параметром метод принимает количество элементов, которое нужно зарезервировать. После вызова метода вектор гарантированно сможет вместить как минимум len + additional элементов без повторного перераспределения памяти.

Метод не изменяет длину вектора - только его ёмкость. Если текущей ёмкости уже достаточно, метод ничего не делает.

Синтаксис

vec.reserve(additional)

Пример

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

fn main() { let mut vec = vec![1, 2, 3]; println!("before: len = {}, capacity = {}", vec.len(), vec.capacity()); vec.reserve(10); println!("after: len = {}, capacity = {}", vec.len(), vec.capacity()); }

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

before: len = 3, capacity = 3 after: len = 3, capacity = 13

Пример

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

fn main() { let mut vec: Vec<i32> = Vec::new(); println!("before: len = {}, capacity = {}", vec.len(), vec.capacity()); vec.reserve(5); println!("after: len = {}, capacity = {}", vec.len(), vec.capacity()); }

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

before: len = 0, capacity = 0 after: len = 0, capacity = 5

Пример

Давайте покажем, что метод не изменяет длину вектора, а только его ёмкость:

fn main() { let mut vec = vec!["a", "b", "c", "d", "e"]; vec.reserve(100); println!("len = {}", vec.len()); println!("capacity = {}", vec.capacity()); println!("{:?}", vec); }

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

len = 5 capacity = 105 ["a", "b", "c", "d", "e"]

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

  • метод capacity,
    который возвращает текущую ёмкость вектора
  • метод with_capacity,
    который создаёт вектор с заданной ёмкостью
  • метод shrink_to_fit,
    который уменьшает ёмкость вектора до его длины
  • класс Vec,
    который представляет динамический массив
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить