Objective-C реализация гистограммы или структуры данных пакета

StackOverflow https://stackoverflow.com/questions/997606

Вопрос

Вместо того чтобы реализовывать свой собственный, мне было интересно, знает ли кто-нибудь о реализации гистограммы или структуры данных bag в Objective-C, которую я мог бы использовать.

По сути, гистограмма - это хэш-карта списков, где списки содержат значения, относящиеся к их хэш-записи.Хорошим примером является гистограмма товаров супермаркета, где вы помещаете каждую группу товаров - молочные продукты, мясо, консервы - в отдельный пакет.Затем вы можете очень легко получить доступ к каждой группе элементов в соответствии с их типом.

Это было полезно?

Решение

NSCountedSet - набор данных является мультимножество (он же "bag"), который подсчитывает отдельные объекты, но не допускает дубликатов.Однако, основываясь на вашем объяснении, я не думаю, что это то, что вам нужно, и ни то, ни другое гистограмма, который автоматически выводит значения на основе набора (обычно числовых) диапазонов.

Я верю, что то, чего ты действительно хочешь, - это мультикарточка, который является отношением "ключ к одному или нескольким значениям".Тот Самый структура структур данных Я утверждаю, что включает в себя Мультипликатор, реализация с несколькими картами.Я ни в коем случае не буду утверждать, что это идеально или завершенно, но я надеюсь, что это может быть полезно для вашей проблемы.

Другие советы

Мне кажется, вам просто нужен словарь массивов.Вы можете поместить 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 );

Есть один в Библиотека классов GNU Objective-C, но документы кажутся довольно неполными, и проект домашняя страница должно быть, в настоящее время возникла проблема - тем не менее, если программное обеспечение GPL приемлемо для вашего проекта, вы можете захотеть скачать и проверьте источники.

CFIOMultimap очевидно, это реализация мультикарты.Однако на момент написания статьи мне не удалось заставить его работать.Он всегда возвращает нули, когда я подписываюсь.

Возможно, его можно исправить и адаптировать для вашего использования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top