猿问

初始化map时如何设置容量可以防止rehash

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

}

地图会在 for 循环中重新散列吗?或者容量应该乘以一个因子以防止重新散列,例如:


capacity := len(s) * 1.3


有只小跳蛙
浏览 116回答 2
2回答

天涯尽头无女友

你不需要一个因素。规格:制作切片、地图和元素:make使用地图类型和大小提示进行调用n将创建一个具有初始空间来容纳n地图元素的地图。精确的行为取决于实现。同样来自内置文档make():Map:为空映射分配足够的空间来容纳指定数量的元素。该大小可以省略,在这种情况下会分配较小的起始大小。

鸿蒙传说

s此代码是最优的,只要 的值小于即可不需要更改capacity
随时随地看视频慕课网APP

相关分类

Go
我要回答