加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组 – “removeLast”会在swift中减少数组的容量吗?

发布时间:2020-12-14 04:39:26 所属栏目:百科 来源:网络整理
导读:我知道.append有时会增加一个数组的容量并形成一个新的数组副本,但是.removeLast会反过来这个并通过复制到一个新的更小的数组来减少数组的容量吗? 解决方法 不(或者至少如果是,则是错误(*)).这将违反其复杂性承诺. 如果您阅读附加的复杂性承诺,它会显示: C
我知道.append有时会增加一个数组的容量并形成一个新的数组副本,但是.removeLast会反过来这个并通过复制到一个新的更小的数组来减少数组的容量吗?

解决方法

不(或者至少如果是,则是错误(*)).这将违反其复杂性承诺.

如果您阅读附加的复杂性承诺,它会显示:

Complexity: Amortized O(1) over many additions. If the array uses a bridged NSArray instance as its storage,the efficiency is unspecified.

“通过多次添加分摊O(1)”意味着对于任何给定的操作,它可能不是O(1),但是元素数量朝向无穷大的限制是O(1),因为越来越大的预分配将是制作,所以重新分配将变得越来越少.

现在阅读removeLast()的复杂性承诺:

Complexity: O(1)

没有重新分配隐藏在那里(或者至少它无法实现“通过复制到一个新的较小的数组”).

(*)这是一个很难的例外.阵列上的任何突变都可能存在写入时的拷贝.这意味着任何突变,无论其性能承诺如何,如果与另一个阵列共享存储,则可能变为O(n).这使得关于Swift性能的推理非常具有挑战性,但并不是特定于这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读