它如何在Swift中增加数组容量?

时间:2018-04-02 15:14:48

标签: ios arrays

我在Apple Docs中读到:

“当您向阵列添加元素并且该阵列开始超出其预留容量时,该阵列会分配更大的内存区域并将其元素复制到新存储中。新存储是旧存储大小的倍数。 “

所以,我打开了Playground并创建了一些例子。第一个例子似乎是正确的:

var array = [1, 2, 3, 4, 5]
array.capacity //5

array.append(contentsOf: [6, 7, 8, 9, 10])
array.capacity //10

array.append(11)
array.capacity //20

但我不明白第二个例子:

var array = [1, 2, 3, 4, 5]
array.capacity //5

array.append(contentsOf: [6, 7, 8, 9, 10, 11])
array.capacity //12

array.append(12)
array.capacity //12

为什么第二个例子中的容量 12 ?我甚至不理解阅读文档和在谷歌搜索。

1 个答案:

答案 0 :(得分:0)

我建议您查看Rob和Matt的答案here

即使有reserveCapacity功能,也不是建议

来自docs

  

Array类型的append( :)和append(contentsOf :)方法为你处理这个细节,但reserveCapacity( :)只分配你告诉它的空间(填充到一个圆值),而不是更多。这样可以避免过度分配,但可能会导致插入没有分摊的常量时间性能。

相关问题