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

Метод with_capacity

Метод with_capacity создает новую пустую хеш-таблицу HashMap, но в отличие от метода new он сразу выделяет память под указанное количество пар ключ-значение. Параметром метод принимает целое число - начальную емкость хеш-таблицы.

Предварительное выделение памяти полезно, когда заранее известно примерное количество элементов, которые будут добавлены в хеш-таблицу. Это позволяет избежать многократного перехеширования и перевыделения памяти при росте коллекции, что положительно сказывается на производительности.

Синтаксис

HashMap::with_capacity(capacity)

Пример

Давайте создадим хеш-таблицу с начальной емкостью 10 элементов и проверим ее размер:

use std::collections::HashMap; fn main() { let map: HashMap<&str, i32> = HashMap::with_capacity(10); println!("{}", map.len()); }

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

0

Пример

Давайте создадим хеш-таблицу с начальной емкостью 20 элементов и добавим в нее несколько пар ключ-значение:

use std::collections::HashMap; fn main() { let mut map: HashMap<&str, i32> = HashMap::with_capacity(20); map.insert("a", 1); map.insert("b", 2); map.insert("c", 3); println!("{}", map.len()); }

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

3

Пример

Давайте сравним емкость хеш-таблицы, созданной через new и через with_capacity:

use std::collections::HashMap; fn main() { let map1: HashMap<&str, i32> = HashMap::new(); let map2: HashMap<&str, i32> = HashMap::with_capacity(50); println!("new: {}", map1.capacity()); println!("with_capacity: {}", map2.capacity()); }

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

new: 0 with_capacity: 50

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

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