我目前正在构建自己的动态数组类型,它也实现了reserveCapacity
方法。由于我的数组类型动态调整了它的容量,我想知道Swift的Array
类型中的行为如何。
它是否只是保留容量,直到下一次更改阵列的大小? - 不。
调用reserveCapacity
函数时,它会保持数组的容量(或更多)永远(除非您调用removeAll
)。
我发现这很奇怪,因为看起来空间效率很低,没有任何占用空间的分配空间。
但后来我想,这可能只是reserveCapacity
应该起作用的方式
但后来我想知道斯威夫特的Array
是否会缩小他们的体型 - 他们不会。
this如何理解?
我也注意到,容量在开始时呈指数级增长(2 -> 4 -> 8 -> ...
),但当它达到64
时,它会变得奇怪(64 -> 188 -> 388 -> ...
),如here所示。他们为什么要这样做?