解决方法
不(或者至少如果是,则是错误(*)).这将违反其复杂性承诺.
如果您阅读附加的复杂性承诺,它会显示:
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性能的推理非常具有挑战性,但并不是特定于这个问题.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。