Самый быстрый контейнер ключ / значение в Objective-C - PullRequest
2 голосов
/ 20 марта 2012

Я создаю механизм подсветки синтаксиса.Моя потребность очень конкретна.Ключевые слова будут связаны с соответствующим массивом атрибутов через указатель.Структура данных будет выглядеть примерно так:

dict = {
    "printf": keyword_attr_ptr
  , "sprintf": keyword_attr_ptr
  , "#import": special_attr_ptr
  , "string": lib_attr_ptr
}

Поиск должен быть очень быстрым, поскольку я буду повторять этот список при каждом нажатии клавиши.

Я задаю этот вопрос, потому чтоЯ не могу найти хорошую документацию о том, как NSDictionary кэширует (если он это делает) и ищет значения по его ключам (использует ли он карту? Hashmap?).Могу ли я рассчитывать на то, что NSDictionary будет оптимизирован для поиска ключей по строкам?

Когда я давно делал нечто подобное, я использовал функцию MFC CMap с очень хорошими результатами.NSDictionary представляется эквивалентом CMap, но тип ключа не указан, а NSDictionary четко заявляет, что ключ может быть объектом любого типа.Я просто хочу убедиться, что могу рассчитывать на то, что результаты будут возвращаться очень быстро, прежде чем я приложу много усилий для решения этой проблемы.

ОБНОВЛЕНИЕ 1

ПослеВ день исследования я задаю вопрос о SO и сразу после ... нахожу ответ: пойди разберись.

Это документация по словарям: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Collections/Articles/Dictionaries.html

Используется хешстол для управления его хранением.Я предполагаю, что короткий ответ - это почти эквивалентно CMap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...