私自身を実装する代わりに、私が使用できる Objective-C のヒストグラムまたはバッグ データ構造の実装を誰かが知っているかどうか疑問に思っていました。
基本的に、ヒストグラムはリストのハッシュマップであり、リストにはハッシュエントリに関連する値が含まれています。良い例は、乳製品、肉、缶詰商品の各グループをそれぞれのバッグに入れるスーパーマーケットの商品のヒストグラムです。その後、タイプに応じてアイテムの各グループに非常に簡単にアクセスできます。
私自身を実装する代わりに、私が使用できる Objective-C のヒストグラムまたはバッグ データ構造の実装を誰かが知っているかどうか疑問に思っていました。
基本的に、ヒストグラムはリストのハッシュマップであり、リストにはハッシュエントリに関連する値が含まれています。良い例は、乳製品、肉、缶詰商品の各グループをそれぞれのバッグに入れるスーパーマーケットの商品のヒストグラムです。その後、タイプに応じてアイテムの各グループに非常に簡単にアクセスできます。
NSCountedSetは、個別のオブジェクトをカウントするマルチセット(別名「バッグ」) ですが、重複は許可されません。ただし、あなたの説明に基づいて、それはあなたが必要としているものではないと思います。また、一連の (通常は数値の) 範囲に基づいて値を自動的にバケット化するhistogramも必要ありません。
あなたが本当に欲しいのは、「1つ以上の値への鍵」関係であるmultimapだと思います。私が管理しているデータ構造フレームワークには、マルチマップの実装であるCHMultiDictionaryが含まれています。それが完璧または完全であるとは決して主張しませんが、あなたの問題に役立つことを願っています.
単に配列の辞書が必要なように思えます。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 );
GNU Objective-C クラス ライブラリに1 つあり、ドキュメントはかなり不完全なようで、プロジェクトのホームページには現在問題があるに違いありません。それでも、GPL ソフトウェアがプロジェクトに受け入れられる場合は、ソース。