The Wayback Machine - https://web.archive.org/web/20180517141355/http://ru.cppreference.com:80/w/cpp/algorithm/binary_search
Пространства имён
Варианты
Действия

std::binary_search

Материал из cppreference.com
< cpp‎ | algorithm

 
 
Алгоритмы
Функции
Немодифицирующие линейные операции
Модифицирующие линейные операции
Разделение
Сортировка (на отсортированных промежутках)
Бинарный поиск (на отсортированных промежутках)
binary_search
Множества (на отсортированных промежутках)
Куча
Минимум/максимум
Числовые операции
Библиотека C
 
Defined in header <algorithm>
template<class ForwardIt, class T >
bool binary_search( ForwardIt first, ForwardIt last, const T& value );
(1)
template<class ForwardIt, class T, class Compare >
bool binary_search( ForwardIt first, ForwardIt last, const T& value, Compare comp );
(2)
Проверяет, отсортированный диапазон [first, last) содержит элемент, равный value. Первый вариант используется operator< для сравнения элементов, вторая версия использует данную функцию сравнения comp.
Оригинал:
Checks if the sorted range [first, last) contains an element equal to value. The first version uses operator< to compare the elements, the second version uses the given comparison function comp.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править]Параметры

first, last
диапазон элементов для изучения
Оригинал:
the range of elements to examine
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
value
Значение для сравнения элементов
Оригинал:
value to compare the elements to
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
comp функция сравнения, возвращающая ​true если первый аргумент меньше второго.

Сигнатура функции сравнения должна быть эквивалентна следующей:

 bool cmp(const Type1 &a, const Type2 &b);

Сигнатура на обязана содержать const&, однако, функция не может изменять переданные объекты.
Тип Type1 должен быть таков, что объект типа T может быть неявно преобразован в Type1. Тип Type2 должен быть таков, что объект типа ForwardIt может быть разыменован и затем неявно преобразован в Type2. ​

Требования к типам
-
ForwardIt должен соответствовать требованиям ForwardIterator.

[править]Возвращаемое значение

true, если элемент, равный value найдено, false иначе.
Оригинал:
true if an element equal to value is found, false otherwise.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править]Сложность

Логарифмическая в расстоянии между first и last
Оригинал:
Logarithmic in the distance between first and last
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править]Возможная реализация

Первый вариант
template<class ForwardIt, class T>bool binary_search(ForwardIt first, ForwardIt last, const T& value){ first =std::lower_bound(first, last, value);return(first != last &&!(value <*first));}
Второй вариант
template<class ForwardIt, class T, class Compare>bool binary_search(ForwardIt first, ForwardIt last, const T& value, Compare comp){ first =std::lower_bound(first, last, value);return(first != last &&!(comp(value, *first));}

[править]Пример

#include <iostream>#include <algorithm>#include <vector>   int main(){std::vector<int> haystack {1, 3, 4, 5, 9};std::vector<int> needles {1, 2, 3};   for(auto needle : needles){std::cout<<"Searching for "<< needle <<'\n';if(std::binary_search(haystack.begin(), haystack.end(), needle)){std::cout<<"Found "<< needle <<'\n';}else{std::cout<<"no dice!\n";}}}

Вывод:

Searching for 1 Found 1 Searching for 2 no dice! Searching for 3 Found 3

[править]См. также

возвращает набор элементов для конкретного ключа
Оригинал:
returns range of elements matching a specific key
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)[править]
close