【问题标题】:How does it work the increase of Array Capacity in Swift?在 Swift 中增加数组容量是如何工作的?
【发布时间】:2018-04-02 15:14:48
【问题描述】:

我在 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?我什至看不懂文档并在 Google 中搜索。

【问题讨论】:

    标签: ios arrays


    【解决方案1】:

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

    即使有一个reserveCapacity 函数,它也不建议

    来自docs

    Array 类型的 append(:) 和 append(contentsOf:) 方法会为您处理这个细节,但是 reserveCapacity(:) 只分配您告诉它的空间(填充到一个整数值),仅此而已。这避免了过度分配,但可能导致插入没有摊销的常数时间性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 2011-06-01
      相关资源
      最近更新 更多