func后缀(来自:Int)似乎与dropFirst(_ :)完全相同(显然,在长度为“10”的数组中,您只需将输入值从“3”更改为“7”.)
只是重复一遍.所以:当然,对于一个长度为十的数组.我的意思是func后缀(来自:Int)与“2”将与dropFirst(_ :)与“8”相同,例如.
同样upTo / through似乎与dropLast(_ :)完全相同
除了方便之外还有什么区别吗?
我想知道,事实上,在Swift中是否只是通过调用另一个来实现?
>由Collection
协议定义.@H_502_20@>从给定的起始Index
返回Subsequence
.@H_502_20@>记录O(1)的时间复杂度(你可以see its default implementation here).@H_502_20@>如果传递的索引超出范围,则运行时错误.
>由Sequence
协议定义.@H_502_20@>返回SubSequence
,其中从序列的头部删除了给定的最大元素数.@H_502_20@>记录的时间复杂度为O(n)*.虽然its default implementation实际上具有O(1)的时间复杂度,但这只是推迟了O(n)遍历删除元素直到迭代.@H_502_20@>如果输入的数字大于序列的长度,则返回空子序列.
*与所有协议要求记录的时间复杂性一样,符合类型可能具有较低时间复杂度的实现.例如,RandomAccessCollection
的dropFirst(_ :)方法将在O(1)时间内运行.
但是,当涉及到Array时,这些方法的行为恰好相同(除了处理超出范围的输入).
这是因为Array的Int类型的索引从0开始并按顺序计数到array.count – 1,因此意味着删除前n个元素的子序列是从索引n开始的相同子序列.
同样因为Array是RandomAccessCollection,两种方法都将在O(1)时间内运行.