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

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

概述我知道.append有时会增加一个数组容量并形成一个新的数组副本,但是.removeLast会反过来这个并通过复制到一个新的更小的数组来减少数组的容量吗? 不(或者至少如果是,则是错误(*)).这将违反其复杂性承诺. 如果您阅读附加的复杂性承诺,它会显示: Complexity: Amortized O(1) over many additions. If the array uses a br 我知道.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性能的推理非常具有挑战性,但并不是特定于这个问题.

总结

以上是内存溢出为你收集整理的数组 – “removeLast”会在swift中减少数组的容量吗?全部内容,希望文章能够帮你解决数组 – “removeLast”会在swift中减少数组的容量吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1005774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存