实例方法
partition(by:)
对集合的元素重新排序,使得与给定谓词匹配的所有元素都在所有不匹配的元素之后。
声明
mutating func partition(by belongsInSecondPartition: (Self.Element) throws -> Bool) rethrows -> Self.Index
返回值
重新排序的集合中与 belongsInSecondPartition
匹配的第一个元素的索引。如果集合中没有元素匹配 belongsInSecondPartition
,则返回的索引等于集合的 endIndex
。
参数
belongsInSecondPartition
用于对集合进行分区的谓词。所有满足这个谓词的元素都排在所有不满足它的元素之后。
详述
对集合进行分区后,有一个枢轴索引 p
,其中 p
之前的任何元素都不满足 belongsInSecondPartition
谓词,而 p
或之后的每个元素都满足 belongsInSecondPartition
。此操作不能保证稳定,因此分区内元素的相对顺序可能会发生变化。
在以下示例中,数字数组由匹配大于 30 的元素的谓词进行分区。
var numbers = [30, 40, 20, 30, 30, 60, 10]
let p = numbers.partition(by: { $0 > 30 })
// p == 5
// numbers == [30, 10, 20, 30, 30, 60, 40]
numbers
数组现在排列在两个分区中。第一个分区 numbers[..<p]
由不大于 30 的元素组成。第二个分区 numbers[p...]
由 are
大于 30 的元素组成。
let first = numbers[..<p]
// first == [30, 10, 20, 30, 30]
let second = numbers[p...]
// second == [60, 40]
请注意,两个分区中元素的顺序发生了变化。也就是说,40
在原始集合中出现在 60
之前,但是在调用 partition(by:)
之后,60
出现在 40
之前。
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift ContiguousArray prefix(upTo:)用法及代码示例
- Swift ContiguousArray prefix(through:)用法及代码示例
- Swift ContiguousArray prefix(_:)用法及代码示例
- Swift ContiguousArray forEach(_:)用法及代码示例
- Swift ContiguousArray insert(contentsOf:at:)用法及代码示例
- Swift ContiguousArray reserveCapacity(_:)用法及代码示例
- Swift ContiguousArray lexicographicallyPrecedes(_:)用法及代码示例
- Swift ContiguousArray elementsEqual(_:)用法及代码示例
- Swift ContiguousArray isEmpty用法及代码示例
- Swift ContiguousArray suffix(from:)用法及代码示例
- Swift ContiguousArray endIndex用法及代码示例
- Swift ContiguousArray reduce(_:_:)用法及代码示例
- Swift ContiguousArray split(separator:maxSplits:omittingEmptySubsequences:)用法及代码示例
- Swift ContiguousArray sort()用法及代码示例
- Swift ContiguousArray firstIndex(of:)用法及代码示例
- Swift ContiguousArray replaceSubrange(_:with:)用法及代码示例
- Swift ContiguousArray contains(_:)用法及代码示例
- Swift ContiguousArray first(where:)用法及代码示例
- Swift ContiguousArray append(contentsOf:)用法及代码示例
- Swift ContiguousArray randomElement(using:)用法及代码示例
- Swift ContiguousArray withUnsafeBufferPointer(_:)用法及代码示例
- Swift ContiguousArray index(_:offsetBy:limitedBy:)用法及代码示例
- Swift ContiguousArray joined(separator:)用法及代码示例
- Swift ContiguousArray subscript(_:)用法及代码示例
- Swift ContiguousArray max()用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 ContiguousArray partition(by:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。