矢量对象在迅速

时间:2017-06-26 05:13:22

标签: arrays swift vector

我注意到在swift中没有使用特定大小声明数组。我知道c ++不是这种情况,使用动态列表我需要使用矢量对象。 swift中是否有某个矢量对象,或者数组是否在运行时调整大小?

1 个答案:

答案 0 :(得分:2)

  

swift中是否有某个矢量对象,或者数组是否在运行时调整大小?

后者:任何数组都会保留足够数量的内存来保存其元素。无论何时将元素附加到数组,使数组超出保留容量,它会分配更大的内存区域,其大小是旧存储容量的倍数。

为什么数组会以指数方式增长内存?

指数增长意味着平均append()(添加元素)函数的时间性能。每当内存增加时,元素都会被复制到新存储中。当然,当触发内存重新分配时,append()函数的性能显着减少,但随着阵列变得越来越大,这种情况发生的频率会降低。

我建议您查看Array Documentation,尤其是"增加数组大小" 章节。如果要在数组中预分配空间,最好知道reserveCapacity(_:)方法。有关capacity

的详细信息,请Related SO post