Objective-C实现直方图或包数据结构

时间:2009-06-15 18:31:21

标签: objective-c data-structures histogram multimap bag

我想知道是否有人知道我可以使用的Objective-C中的直方图或数据包数据结构实现,而不是实现我自己。

直方图基本上是列表的散列映射,其中列表包含与其散列条目相关的值。一个很好的例子是超市物品的直方图,您可以将每组物品放入奶瓶,肉类,罐头食品中。然后,您可以根据其类型轻松访问每组项目。

4 个答案:

答案 0 :(得分:5)

NSCountedSet是一个multiset(又名“包”),用于计算不同的对象,但不允许重复。但是,根据您的解释,我不认为这是您需要的,也不是histogram,它会根据一组(通常为数字)范围自动存储值。

我相信你真正想要的是multimap,这是“一个或多个价值”关系的关键。我维护的data structures framework包括CHMultiDictionary,一个多图实现。我不会以任何方式声称它是完美的或完整的,但我希望它对你的问题有所帮助。

答案 1 :(得分:3)

听起来像你只是想要一个数组字典。您可以将NSArrays作为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 );

答案 2 :(得分:1)

GNU Objective-C Class library中有一个,但docs似乎相当不完整,项目的homepage目前一定有问题 - 如果GPL软件可以接受项目,您可能需要download并检查来源。

答案 3 :(得分:0)

CFIOMultimap显然是多图的实现。但是,截至撰写本文时,我无法让它发挥作用。当我下标时,它会一直返回nils。

也许它可以修复并适合您的使用。