Двоичный поиск (binary_search)
template
<class ForwardIterator, class T>
bool
binary_search(ForwardIterator first,
ForwardIterator
last, const T& value);
template
<class ForwardIterator, class T, class Compare>
bool
binary_search(ForwardIterator first,
ForwardIterator
last, const T& value, Compare comp);
Алгоритм
binary_search
возвращает истину,
если в
диапазоне [first,
last) имеется
итератор i,
который удовлетворяет
соответствующим условиям:
!(*i < value) && !(value <
*i) или
comp(*i, value) == false &&
comp(value, *i) == false. Фактически
проверяется, есть ли в заданной
последовательности элемент со значением,равным value, и
если есть, то возвращаетсяtrue.
Делается максимумlog(last
- first) + 2 сравнений.
1Подобные алгоритмы рассмотрены в
следующей работе
2Классlistсодержит методsort, который может быть
использован для сортировки содержимого
массива вместо алгоритмаsort