Frage

Statt der Umsetzung meiner eigenen ich mich gefragt, ob jemand ein Histogramm oder eine Tasche Datenstruktur Implementierung in Objective-C weiß, dass ich verwenden können.

Wesentliches ein Histogramm ist ein hashmap von Listen, in denen die Listen-Werte enthalten, die zu ihrem Hash-Eintrag beziehen. Ein gutes Beispiel ist ein Histogramm des Supermarkt Postens, bei denen Sie jede Gruppe von Elementen Milch platzieren, Fleisch, Konserven in ihrer eigenen Tasche. Sie können dann sehr einfach, jede Gruppe von Elementen Zugriff entsprechend ihrer Art.

War es hilfreich?

Lösung

NSCountedSet ist ein multiset (auch bekannt als "bag"), die verschiedene Objekte zählt, aber keine Duplikate erlauben. Doch auf der Grundlage Ihrer Erklärung, ich glaube nicht, dass das, was Sie brauchen, und keiner ist ein Histogramm , die automatisch Wert Schaufeln basierend auf einem Satz von (in der Regel numerisch) reicht.

Ich glaube, was Sie wirklich wollen, ist ein multimap , die ein „Schlüssel zu eins -oder-Werte mehr“-Beziehung. Die Datenstrukturen Rahmen ich halten enthält CHMultiDictionary , eine multimap Implementierung. Ich werde nicht mit irgendwelchen Mitteln behaupten, dass es perfekt ist oder vollständig, aber ich hoffe, dass es für Ihr Problem hilfreich sein kann.

Andere Tipps

Es klingt für mich wie Sie ein Wörterbuch einfach von Arrays wollen. Sie können NSArrays als Elemente NSDictionarys setzen, so etwas wie:

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 );

Es ist ein in der GNU Objective-C Klassenbibliothek , aber die docs ziemlich unvollständig zu sein scheinen und die a href des Projekts <= "http: / /www.cs.rochester.edu/u/mccallum/libobjects/“rel =‚nofollow noreferrer‘> Homepage muss zur Zeit ein Problem mit werden - nach wie vor, wenn GPL-Software für Ihr Projekt akzeptabel ist, können Sie zum herunterladen rel="nofollow und überprüfen Sie die Quellen.

CFIOMultimap ist offenbar eine Implementierung eines multimap. Wie jedoch aus der Zeit des Schreibens konnte ich es nicht zu arbeiten. Es gibt nils die ganze Zeit, wenn ich SUBSCRIPT.

Vielleicht kann es für Ihre Anwendung festgelegt und angepasst werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top