【发布时间】:2011-10-14 12:11:02
【问题描述】:
我已经对 CFArray 进行了排序,我需要找到一个值的索引。但是我也不确定该值是否在这个数组中,所以我也需要知道这一点。
现在我使用这个代码:
NSInteger valueIndex;
BOOL valueExactMatch = CFArrayContainsValue((CFArrayRef)sortedBorders, arrayRange, value);
if (valueExactMatch)
valueIndex = CFArrayGetFirstIndexOfValue((CFArrayRef)sortedBorders, arrayRange, value);
else
valueIndex = CFArrayBSearchValues((CFArrayRef)sortedBorders, arrayRange, value, (CFComparatorFunction) CFDateCompare, nil);
但据我了解,valueExactMatch 被计算了两次——一次在 CFArrayContainsValue 中,一次执行实际搜索。
我可以使用现有的 CFArray 实现对其进行优化吗?
【问题讨论】:
标签: objective-c arrays optimization search binary-search