Collaboration diagram for Searches:
Searches  
(OLForwardIterator *)  + adjacentFindFrom:to: 
Find the first instance of adjacent elements.  
(OLForwardIterator *)  + adjacentFindFrom:to:predicate: 
Find the first instance of adjacent elements.  
(BOOL)  + binarySearchFrom:to:value: 
Perform a binary search.  
(BOOL)  + binarySearchFrom:to:value:predicate: 
Perform a binary search.  
(unsigned)  + countFrom:to:predicate: 
Count elements.  
(unsigned)  + countFrom:to:value: 
Count elements.  
(OLPair *)  + equalRangeFrom:to:value: 
Find the equal range of a given value.  
(OLPair *)  + equalRangeFrom:to:value:predicate: 
Find the equal range of a given value.  
(OLForwardIterator *)  + findEndFrom:to:subFrom:subTo: 
Find the last occurrence of a subsequence in a given range.  
(OLForwardIterator *)  + findEndFrom:to:subFrom:subTo:predicate: 
Find the last occurrence of a subsequence in a given range.  
(OLForwardIterator *)  + findFirstFrom:to:ofFrom:ofTo: 
Find any of a set of values.  
(OLForwardIterator *)  + findFirstFrom:to:ofFrom:ofTo:predicate: 
Find any of a set of values.  
(OLForwardIterator *)  + findFrom:to:if: 
Find an element.  
(OLForwardIterator *)  + findFrom:to:value: 
Find an element.  
(BOOL)  + includesFrom:to:subFrom:subTo: 
Determine whether one range exists in another range.  
(BOOL)  + includesFrom:to:subFrom:subTo:predicate: 
Determine whether one range exists in another range.  
(OLForwardIterator *)  + lowerBoundFrom:to:value: 
Find the first position at which a value may be inserted without disturbing the sorting order.  
(OLForwardIterator *)  + lowerBoundFrom:to:value:predicate: 
Find the first position at which a value may be inserted without disturbing the sorting order.  
(OLForwardIterator *)  + maxElementFrom:to: 
Find the element with the highest value.  
(OLForwardIterator *)  + maxElementFrom:to:predicate: 
Find the element with the highest value.  
(OLForwardIterator *)  + minElementFrom:to: 
Find the element with the lowest value.  
(OLForwardIterator *)  + minElementFrom:to:predicate: 
Find the element with the lowest value.  
(OLPair *)  + mismatchFrom:to:with: 
Find the first position where two ranges differ.  
(OLPair *)  + mismatchFrom:to:with:predicate: 
Find the first position where two ranges differ.  
(OLForwardIterator *)  + searchFrom:to:count:value: 
Search for a number of consecutive instances of an object.  
(OLForwardIterator *)  + searchFrom:to:count:value:predicate: 
Search for a number of consecutive instances of an object.  
(OLForwardIterator *)  + searchFrom:to:subFrom:subTo: 
Find a subsequence within a given range.  
(OLForwardIterator *)  + searchFrom:to:subFrom:subTo:predicate: 
Find a subsequence within a given range.  
(OLForwardIterator *)  + upperBoundFrom:to:value: 
Find the last position at which a value may be inserted without disturbing the sorting order.  
(OLForwardIterator *)  + upperBoundFrom:to:value:predicate: 
Find the last position at which a value may be inserted without disturbing the sorting order. 
Numerous types of searches are provided including linear searches, binary searches, subsequence searches, searches for mismatches and many others. All searches operate using forward iterators, thus they can be used with any type of container. However, bear in mind that some containers provide optimized versions of some algorithms, which should be preferred to the generic version when they exist. For example, associative containers, like OLMap, OLSet, and so forth, provide optimized versions of binary searches. Please use those when they are provided.
+ (OLForwardIterator*) adjacentFindFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
Find the first instance of adjacent elements.
This message sends the message adjacentFindFrom:to:predicate: with OLEqualTo as the predicate.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search 
+ (OLForwardIterator*) adjacentFindFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Find the first instance of adjacent elements.
Two elements, a and b, are considered adjacent if a and b are next to each other in the range [first, last)
and the predicate object, pred, returns YES when a and b are passed as arguments. An iterator pointing to the first of the pair is returned.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
pred  the function object to use to compare elements 
+ (BOOL) binarySearchFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
value:  (id)  object  
Perform a binary search.
This message sends the message binarySearchFrom:to:value:predicate: using a predicate of OLLess.
[first, last)
must already be sorted using the predicate object OLLess.first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
object  the value for which to search 
+ (BOOL) binarySearchFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
value:  (id)  object  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Perform a binary search.
A binary search is performed for the value object with the function object pred for comparing objects. Specifically, pred indicates what sorted order the elements in the range [first, last)
are in.
[first, last)
must already be sorted using the predicate object pred.first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
object  the value for which to search  
pred  the predicate object that indicates the sorting order of the range 
+ (unsigned) countFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
predicate:  (id< OLBoolUnaryFunction >)  pred  
Count elements.
The number of elements in the range [first, last)
for which the predicate, pred, returns YES is returned.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
pred  the function object used to test each element 
+ (unsigned) countFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
value:  (id)  object  
Count elements.
The number of elements in the range [first, last)
for which object returns YES to the message isEqual:
.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
object  the object with which to compare each element 
+ (OLPair*) equalRangeFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
value:  (id)  object  
Find the equal range of a given value.
This message sends the message equalRangeFrom:to:value:predicate: with OLLess as the predicate.
[first, last)
must be sorted by OLLess.first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
object  the object for which to search 
+ (OLPair*) equalRangeFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
value:  (id)  object  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Find the equal range of a given value.
A pair of iterators is returned, one of which represents the first position where object can be inserted without disturbing the sorting order, and the other of which represents the last position where object can be inserted without disturbing the sorting order. A side effect of this operation is that it will return a range of elements that are all equal to object. Additionally, it is simply a combination of lowerBoundFrom:to:value:predicate: and upperBoundFrom:to:value:predicate: with the results of those two messages contained in the resulting pair.
The returned pair has an instance of OLForwardIterator representing the lower bound as its first value and another instance of OLForwardIterator representing the upper bound as its second value.
[first, last)
must be sorted by pred.first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
object  the object for which to search  
pred  the function object used as the sorting operation for the range [first, last) 
+ (OLForwardIterator*) findEndFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
subFrom:  (OLForwardIterator *)  first2  
subTo:  (OLForwardIterator *)  last2  
Find the last occurrence of a subsequence in a given range.
This message sends the message findEndFrom:to:subFrom:subTo:predicate: using OLEqualTo as the predicate.
first1  the first in the range of elements to search  
last1  one position beyond the last in the range of elements to search  
first2  the first in the subsequence for which to search  
last2  one position beyond the last in the subsequence for which to search 
+ (OLForwardIterator*) findEndFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
subFrom:  (OLForwardIterator *)  first2  
subTo:  (OLForwardIterator *)  last2  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Find the last occurrence of a subsequence in a given range.
The last matching subsequence of values in [first2, last2)
is found in the sequence [first1, last1)
and an iterator pointing to the beginning of the subsequence is returned. Values are compared using the function object pred. If the subsequence cannot be found, then an iterator equal to last1 is returned.
first1  the first in the range of elements to search  
last1  one position beyond the last in the range of elements to search  
first2  the first in the subsequence for which to search  
last2  one position beyond the last in the subsequence for which to search  
pred  the function object used to compare elements 
+ (OLForwardIterator*) findFirstFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
ofFrom:  (OLForwardIterator *)  first2  
ofTo:  (OLForwardIterator *)  last2  
Find any of a set of values.
This message sends the message findFirstFrom:to:ofFrom:ofTo:predicate: using OLEqualTo as the predicate.
first1  the first in the range of elements to search  
last1  one position beyond the last in the range of elements to search  
first2  the first in the range of candidates  
last2  one position beyond the last in the range of candidates 
+ (OLForwardIterator*) findFirstFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
ofFrom:  (OLForwardIterator *)  first2  
ofTo:  (OLForwardIterator *)  last2  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Find any of a set of values.
The range [first1, last1)
is searched for the first instance of any value from the range [first2, last2)
using pred as the comparison function. An iterator pointing to the first match is returned, or an iterator equal to last1 is returned if no match is found.
first1  the first in the range of elements to search  
last1  one position beyond the last in the range of elements to search  
first2  the first in the range of candidates  
last2  one position beyond the last in the range of candidates  
pred  the function object used to compare elements 
+ (OLForwardIterator*) findFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
if:  (id< OLBoolUnaryFunction >)  pred  
Find an element.
An iterator pointing to the first element in the range [first, last)
for which the function object pred returns YES is returned. If pred does not return YES for any elements, then an iterator equal to last is returned.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
pred  the function that tests elements 
+ (OLForwardIterator*) findFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
value:  (id)  object  
Find an element.
The range [first, last)
is searched for an element equal to object. Equality is tested using the message isEqual:
. An iterator pointing to the first equal element, or an iterator equal to last if no match is found, is returned.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
object  the object for which to search 
+ (BOOL) includesFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
subFrom:  (OLForwardIterator *)  first2  
subTo:  (OLForwardIterator *)  last2  
Determine whether one range exists in another range.
This message simply sends the message includesFrom:to:subFrom:subTo:predicate: using OLLess as the predicate.
[first1, last1)
and [first2, last2)
must be sorted using the predicate OLLess.first1  the first in the range of elements to search  
last1  one position beyond the last in the range of elements to search  
first2  the first in the range of elements for which to search  
last2  one position beyond the last in the range of elements for which to search 
+ (BOOL) includesFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
subFrom:  (OLForwardIterator *)  first2  
subTo:  (OLForwardIterator *)  last2  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Determine whether one range exists in another range.
This message differs from findFirstFrom:to:ofFrom:ofTo:predicate: in that it simply determines whether all of the elements in the range [first2, last2)
exist in the range [first1, last1)
in the same order, although the elements do not need to be contiguous in [first1, last1)
. The function object pred indicates the sorting order of both [first1, last1)
and [first2, last2)
.
[first1, last1)
and [first2, last2)
must be sorted using the predicate pred.first1  the first in the range of elements to search  
last1  one position beyond the last in the range of elements to search  
first2  the first in the range of elements for which to search  
last2  one position beyond the last in the range of elements for which to search  
pred  the function object by which both ranges are sorted 
+ (OLForwardIterator*) lowerBoundFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
value:  (id)  object  
Find the first position at which a value may be inserted without disturbing the sorting order.
This message simply sends the message lowerBoundFrom:to:value:predicate: using OLLess as the predicate.
[first, last)
must be sorted using the predicate OLLess.first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
object  the object with which to compare objects in the range 
+ (OLForwardIterator*) lowerBoundFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
value:  (id)  object  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Find the first position at which a value may be inserted without disturbing the sorting order.
Using a binary search, the message locates the first position at which object may be inserted without disturbing the order defined by pred. A side effect of this message is that the iterator returned will be the first position of an object equal to object, if such an object exists in the range.
[first, last)
must be sorted using the predicate pred.first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
object  the object with which to compare objects in the range  
pred  the function object with which the range is sorted 
+ (OLForwardIterator*) maxElementFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
Find the element with the highest value.
This message simply sends the message maxElementFrom:to:predicate: using OLLess as the predicate.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search 
+ (OLForwardIterator*) maxElementFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Find the element with the highest value.
Specifically, the message finds the first element i in the range [first, last)
for which every other element j the predicate pred message performBinaryFunctionWithArg: i andArg: j
returns NO. An iterator pointing to the highest value is returned.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
pred  the function object used for comparison 
+ (OLForwardIterator*) minElementFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
Find the element with the lowest value.
This message simply sends the message minElementFrom:to:predicate: using OLLess as the predicate.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search 
+ (OLForwardIterator*) minElementFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Find the element with the lowest value.
Specifically, the message finds the first element i in the range [first, last)
for which every other element j the predicate pred message performBinaryFunctionWithArg: j andArg: i
returns NO. An iterator pointing to the highest value is returned.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
pred  the function object used for comparison 
+ (OLPair*) mismatchFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
with:  (OLForwardIterator *)  first2  
Find the first position where two ranges differ.
This message simply sends the message mismatchFrom:to:with:predicate: using OLEqualTo as the predicate.
first1  the first in the range of elements to search  
last1  one position beyond the last in the range of elements to search  
first2  the first in the second range of elements to search 
+ (OLPair*) mismatchFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
with:  (OLForwardIterator *)  first2  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Find the first position where two ranges differ.
The range [first1, last)
is compared with the range that begins at first2, and the first position where the two differ is returned. The predicate pred is used to determine equality. A pair of instances of OLForwardIterator is returned: the first element of the pair points to the mismatch in the range [first1, last)
, and the second element of the pair points to the mismatch in the range starting from first2. If no mismatch is found then the pair contains iterators equal to last1 and last2.
first1  the first in the range of elements to search  
last1  one position beyond the last in the range of elements to search  
first2  the first in the second range of elements to search  
pred  the function object used to test objects for equality 
+ (OLForwardIterator*) searchFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
count:  (unsigned)  num  
value:  (id)  object  
Search for a number of consecutive instances of an object.
This message simply sends the message searchFrom:to:count:value:predicate: using OLEqualTo as the predicate.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
num  the number of instances of object for which to search  
object  the object for which to search 
+ (OLForwardIterator*) searchFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
count:  (unsigned)  num  
value:  (id)  object  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Search for a number of consecutive instances of an object.
The message searches the range [first, last)
for num consecutive instances of object using pred to test objects for equality. An iterator pointing to the beginning of the range of consecutive objects is returned, or if no match is found an iterator equal to last is returned.
first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
num  the number of instances of object for which to search  
object  the object for which to search  
pred  the function object used to test for equality 
+ (OLForwardIterator*) searchFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
subFrom:  (OLForwardIterator *)  first2  
subTo:  (OLForwardIterator *)  last2  
Find a subsequence within a given range.
This message simply sends the message searchFrom:to:subFrom:subTo:predicate: using OLEqualTo as the predicate.
first1  the first in the range of elements to search  
last1  one position beyond the last in the range of elements to search  
first2  the first in the subsequence for which to search  
last2  one position beyond the last in the subsequence for which to search 
+ (OLForwardIterator*) searchFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
subFrom:  (OLForwardIterator *)  first2  
subTo:  (OLForwardIterator *)  last2  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Find a subsequence within a given range.
The first instance of the subsequence described by the range [first2, last2)
is searched for in the range [first1, last1)
and an iterator to its position is returned. The predicate pred is used to test objects for equality. If no match is found, then an iterator equal to last1 is returned.
first1  the first in the range of elements to search  
last1  one position beyond the last in the range of elements to search  
first2  the first in the subsequence for which to search  
last2  one position beyond the last in the subsequence for which to search  
pred  the function object used to test objects for equality 
+ (OLForwardIterator*) upperBoundFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
value:  (id)  object  
Find the last position at which a value may be inserted without disturbing the sorting order.
This message simply sends the message upperBoundFrom:to:value:predicate: using OLLess as the predicate.
[first, last)
must be sorted using the predicate OLLess.first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
object  the object with which to compare objects in the range 
+ (OLForwardIterator*) upperBoundFrom:  (OLForwardIterator *)  first  
to:  (OLForwardIterator *)  last  
value:  (id)  object  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Find the last position at which a value may be inserted without disturbing the sorting order.
Using a binary search, the message locates the last position at which object may be inserted without disturbing the order defined by pred. A side effect of this message is that the iterator returned will be one beyond the last position of an object equal to object, if such an object exists in the range.
[first, last)
must be sorted using the predicate pred.first  the first in the range of elements to search  
last  one position beyond the last in the range of elements to search  
object  the object with which to compare objects in the range  
pred  the function object with which the range is sorted 
