Как установить емкость при инициализации карты может предотвратить перефразировку - PullRequest
0 голосов
/ 23 марта 2020
s := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
capacity := len(s)
m := make(map[int]bool, capacity)
for _, n := range s {
    m[n] = true
}

Будет ли карта повторно sh в течение l oop? Или емкость должна умножиться на коэффициент, чтобы предотвратить reha sh, например:

capacity := len(s) * 1.3

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Вам не нужен фактор. Spe c: Создание срезов, карт и элементов:

Вызов make с подсказкой типа и размера карты n создаст карту с начальным пространством для хранения n элементы карты. Точное поведение зависит от реализации.

Также из do c встроенного make():

Карта: пусто Карта выделяется с достаточным пространством для хранения указанного количества элементов. Размер может быть опущен, в этом случае выделяется небольшой начальный размер.

0 голосов
/ 23 марта 2020

Этот код является наиболее оптимальным и не требует изменения, если значения s меньше capacity

...