3

私自身を実装する代わりに、私が使用できる Objective-C のヒストグラムまたはバッグ データ構造の実装を誰かが知っているかどうか疑問に思っていました。

基本的に、ヒストグラムはリストのハッシュマップであり、リストにはハッシュエントリに関連する値が含まれています。良い例は、乳製品、肉、缶詰商品の各グループをそれぞれのバッグに入れるスーパーマーケットの商品のヒストグラムです。その後、タイプに応じてアイテムの各グループに非常に簡単にアクセスできます。

4

4 に答える 4

5

NSCountedSetは、個別のオブジェクトをカウントするマルチセット(別名「バッグ」) ですが、重複は許可されません。ただし、あなたの説明に基づいて、それはあなたが必要としているものではないと思います。また、一連の (通常は数値の) 範囲に基づいて値を自動的にバケット化するhistogramも必要ありません。

あなたが本当に欲しいのは、「1つ以上の値への鍵」関係であるmultimapだと思います。私が管理しているデータ構造フレームワークには、マルチマップの実装であるCHMultiDictionaryが含まれています。それが完璧または完全であるとは決して主張しませんが、あなたの問題に役立つことを願っています.

于 2009-06-15T18:57:11.317 に答える
3

単に配列の辞書が必要なように思えます。NSArrayをNSDictionarysの要素として次のように配置できます。

NSMutableDictionary* dict = [NSMutableDictionary dictionary];
[dict setObject:[NSMutableArray arrayWithObjects:@"milk", @"eggs", @"cheese", nil] forKey:@"dairy"];
[dict setObject:[NSMutableArray arrayWithObjects:@"steak", @"sausages", @"mince", nil] forKey:@"meat"];

[[dict objectForKey:@"meat"] addObject:@"lamb"];

NSLog( @"Dictionary is %@", dict );
于 2009-06-16T02:04:26.487 に答える
1

GNU Objective-C クラス ライブラリに1 つあり、ドキュメントはかなり不完全なようで、プロジェクトのホームページには現在問題があるに違いありません。それでも、GPL ソフトウェアがプロジェクトに受け入れられる場合、ソース。

于 2009-06-15T18:41:54.540 に答える