Поиск наборов
Базовая Основа включает несколько интерфейсов программирования для нахождения значений (и, в случае CFDictionary, ключей) в объектах коллекции. CF
ВвестиGetValueIfPresent
функции, описанные в Получении Значений Наборов, сообщают относительно существования значений в словарях, наборах и сумках. Можно также использовать функции с, «Содержит» на их имена, чтобы определить, содержит ли набор значение или ключ. Перечисление 1 иллюстрирует как CFDictionaryContainsKey
функция могла бы использоваться.
Перечисление 1 , Ищущее CFDictionary, возражает для ключа
if (CFDictionaryContainsKey(mappingTable, (const void*)lowerCharsetName)) { |
result = (CFStringEncoding)CFDictionaryGetValue(mappingTable, (const void*)lowerCharsetName); |
} |
Для объектов CFArray, CFArrayBSearchValues
функционируйте предлагает более сложный параметр поиска. Эта функция ищет указанное значение в сортированном массиве с помощью алгоритма двоичного поиска. Если значение не существует в наборе, функция говорит Вам, куда это должно пойти; CFArrayBSearchValues
функция таким образом помогает Вам сохранить сортированный непостоянный массив сортированным. Перечисление 2 показывает, как могла бы быть вызвана эта функция.
Перечисление 2 , Ищущее значение в объекте CFArray
CFIndex position = CFArrayBSearchValues(aMutArray, CFRangeMake(0,CFArrayGetCount(anArray)), (const void *)CFSTR("String Three"), CFStringCompare, 0); |
Четвертый параметр CFArrayBSearchValues
функция должна быть указателем на функцию, соответствующую CFComparatorFunction
ввести. Эта функция компаратора, как предполагается, знает, как сравнить значения в массиве. В данном примере CFStringCompare
используется, потому что это соответствует CFComparatorFunction
и это знает, как сравнить значения CFString. Существуют другие предопределенные Базовые функции компаратора Основы, которые можно использовать, такой как CFNumberCompare
и CFDateCompare
.
По возврату вышеупомянутого вызова, функция CFIndex
результат может указать одно из следующего:
Если значение существует, его индекс в массиве
Индекс, больше, чем или равный до конца точка диапазона, если указанное значение больше, чем все значения в rangeThe индексе значения, больше, чем указанное значение, если значение находится между двумя из (или меньше, чем весь из) значения в диапазоне.
Можно использовать CFArrayContainsValue
определить, является ли результат первым из перечисленных альтернатив.
Тип CFTree определяет другую группу функций для определения местоположения содержавших значений (т.е. поддеревья). Посмотрите Создание и Копирование Наборов для получения дополнительной информации.