Я хочу создать пользовательский словарь, который не копирует его ключи (просто сохраняет).Компаратор на основе целых адресов
Внутри я планирую использовать NSMutableArray
со специальным парным объектом, где первым объектом пары является ключ, а второй - значение.
Ключи все уникальные.
Для быстрого извлечения объектов на клавишах я бы использовал алгоритм бинарного поиска - так что массив должен быть СОРТИРОВАН (внимание!) На адресам памяти первых объектов пар.
(кстати, именно поэтому я отказался использовать CFDictionaryRef со специальным набором обратных вызовов - Я подозреваю, что это деградировать в O (N) в случае, если не будет обеспечен разумный хэш)
ли это плохая идея, при условии, что:
- Объекты, используемые в качестве ключей могут измениться внутренне (то есть, я не могу использовать
isEqual:
вместо сравнения адресов); - Объекты, используемые в качестве ключей, НЕ будут освобождены (что разумно - они сохраняются специальным парным объектом, а пара сохраняется внутренним NSArray).
Почему это плохо (или хорошо)?
Как получить адрес памяти от указателя? Просто бросьте его на long long int
или что-то в этом роде?
Спасибо!
«Как получить адрес памяти из указателя?» значение указателя * есть * адрес памяти ... – Richard
Я знаю, что это внутренне это :), но я всегда думал, что не могу сравнивать значения указателя напрямую с < and >. – wh1t3cat1k