gpt4 book ai didi

arrays - `removeLast` 会 swift 减少数组的容量吗?

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:24 27 4
gpt4 key购买 nike

我知道 .append 偶尔会增加数组的容量并形成数组的新副本,但 .removeLast 会逆转这种情况并减少容量通过复制到一个新的更小的数组来改变数组?

最佳答案

否(或者至少如果是,则它是一个错误 (*))。这将违反其复杂性 promise 。

如果您阅读了append 的复杂性 promise ,它是这样的:

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() 的复杂性 promise :

Complexity: O(1)

那里没有地方可以隐藏重新分配(或者至少它不能“通过复制到一个新的更小的数组”来实现)。

(*) 对此有一个困难的异常(exception)。阵列上的任何突变都可能受到写时复制的影响。这意味着如果与另一个数组共享存储空间,任何 突变,无论其性能 promise 如何,都可能变为 O(n)。这使得关于 Swift 性能的推理非常具有挑战性,但并不特定于这个问题。

关于arrays - `removeLast` 会 swift 减少数组的容量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004508/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com