Objective-Cで数値配列の長いリストを同じ数値の小さな配列にグループ化する効率的な方法は何ですか? または、このための標準ライブラリがある場合。
質問する
70 次
1 に答える
1
NSCountedSet
Cocoa には、繰り返される可能性のある一連のオブジェクトを処理するために特別に作成された、非常に優れたデータ構造があります。それに一連のオブジェクト (数字など) を追加すると、構造体は各オブジェクトが追加された回数を記憶します。
たとえば、次のようなシーケンスで開始する場合
1, 3, 5, 2, 4, 2, 5, 6, 2, 4, 3
これらの数値をカウント セットに追加すると、構造は次のようになります。
N - Count
- - -----
1 - 1
2 - 3
3 - 2
4 - 2
5 - 2
6 - 1
このセットを使用すると、配列の配列を構築したり、単にカウントされたセットをより効率的な表現として保持したりできます。
次に例を示します。
NSArray *data = @[@1, @3, @5, @2, @4, @2, @5, @6, @2, @4, @3];
NSCountedSet *cs = [[NSCountedSet alloc] initWithArray:data];
NSEnumerator *enumerator = [cs objectEnumerator];
NSNumber *value;
while ((value = [enumerator nextObject])) {
NSLog(@"%@ - %d", value, [cs countForObject:value]);
}
于 2013-07-18T19:28:18.363 に答える