我突然想到,在 Swift 中处理子序列时,
func suffix(from: Int)
似乎与刚才相同dropFirst(_:)
(显然,对于长度为“10”的数组,只需将输入值从“3”更改为“7”即可。)
只是重复一遍。所以:当然,对于一系列的说法长十.我的意思是func suffix(from: Int)
与“2”相同dropFirst(_:)
与“8”, 例如。
相似地upTo
/ through
似乎与dropLast(_:)
除了方便以外有什么不同吗?
(也许是在错误条件、性能或?)
我想知道,事实上,在 Swift 内部,一个或另一个是否只是通过调用另一个来实现的?
他们是完全不同的。
*与记录时间复杂度的所有协议要求一样,符合类型可以具有较低时间复杂度的实现。例如,一个RandomAccessCollection https://developer.apple.com/reference/swift/randomaccesscollection/'s dropFirst(_:)
方法将在 O(1) 时间内运行。
然而,当谈到Array
,这些方法只是happen行为相同(除了处理超出范围的输入)。
这是因为Array
has an Index
类型的Int
从0
并依次计数至array.count - 1
,因此意味着第一个子序列n
丢弃的元素是相同的子序列从索引开始n
.
也因为Array
is a RandomAccessCollection
,这两种方法都将在 O(1) 时间内运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)