Domanda

Invece di implementare la mia mi chiedevo se qualcuno sa di un'implementazione datastructure istogramma o sacchetto in Objective-C che posso usare.

Essenzialmente un istogramma è un HashMap di liste in cui le liste contengono i valori che si riferiscono al loro ingresso hash. Un buon esempio è un istogramma di elementi supermercato dove si svolge ogni gruppo di prodotti lattiero-caseari, carne, prodotti in scatola nella propria borsa. È quindi possibile accedere molto facilmente ogni gruppo di elementi in base al loro tipo.

È stato utile?

Soluzione

NSCountedSet è un MULTISET (alias "bag") che conta oggetti distinti, ma non consente duplicati. Tuttavia, in base alla spiegazione, non credo che sia quello che ti serve, e nessuno dei due è un istogramma , che benne automaticamente i valori sulla base di una serie di (solitamente numerico) varia.

Credo che ciò che si vuole veramente è un multimappa , che è una "chiave a uno -o-più valori relazione". I href="http://cocoaheads.byu.edu/code/CHDataStructures" quadro strutture dati Io sostengo include CHMultiDictionary , un'implementazione multimap. Non voglio affermare con ogni mezzo che è perfetto o completa, ma spero che possa essere utile per il vostro problema.

Altri suggerimenti

Sembra a me come si desidera semplicemente un dizionario di array. Si può mettere NSArrays come elementi di NSDictionarys, qualcosa come:

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

C'è una nel GNU Objective-C Class Library , ma il docs sembrano essere piuttosto incompleta e del progetto home page devono essere attualmente avendo un problema - ancora, se il software GPL è accettabile per il vostro progetto, si potrebbe desiderare scaricare e controllare le fonti.

CFIOMultimap a quanto pare è l'implementazione di un multimap. Tuttavia, a partire dal momento in cui scrivo non ho potuto farlo funzionare. Esso restituisce Nils tutto il tempo in cui ho pedice.

Forse può essere fissato e adattato per il vostro uso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top