文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Sequence and Collection Protocols   >   MutableCollection   >   partition(by:)
インスタンスメソッド
partition(by:)
与えられた predicate (述語) と一致するすべての要素が、一致しないすべての要素の後にくるように、コレクションの要素を並べ替えます。
必須。 デフォルトの実装が提供されます。
宣言
mutating func partition(by belongsInSecondPartition: (Self.Element) throws -> Bool) rethrows -> Self.Index
パラメータ
belongsInSecondPartition | コレクションを分割するために使用される predicate (述語) 。この述語を満たすすべての要素は、それを満たさないすべての要素の後に順序付けられます。 |
戻り値
belongsInSecondPartition と一致する並べ替えられたコレクション内の最初の要素のインデックス。コレクション内のどの要素も belongsInSecondPartition と一致しない場合、返されるインデックスはコレクションの endIndex と等しくなります。
議論
コレクションを分割した後、ピボット・インデックス p があり、p の前の要素は belongsInSecondPartition の predicate (述語) を満たさず、p を含むそれ以降のすべての要素が belongsInSecondPartition を満たします。
以下の例では、数値の配列は、30 を超える要素に一致する predicate (述語) で区切られています。
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 の配列は 2 つのパーティションになりました。最初の部分の numbers[.. <p] は、30 を超えない要素で構成されています。2 番目の部分の numbers[p...] は、30 を超える要素で構成されています。
let first = numbers[..<p] // first == [30, 10, 20, 30, 30] let second = numbers[p...] // second == [60, 40]
複雑さ:O(n)、ここで n はコレクションの長さです。
デフォルトの実装
MutableCollection の実装
func partition(by: (Self.Element) -> Bool) -> Self.Index
与えられた predicate (述語) と一致するすべての要素が、一致しないすべての要素の後にくるように、コレクションの要素を並べ替えます。
func partition(by: (Self.Element) -> Bool) -> Self.Index
与えられた predicate (述語) と一致するすべての要素が、一致しないすべての要素の後にくるように、コレクションの要素を並べ替えます。