Я просмотрел find и binary_search, но find не использует тот факт, что вектор отсортирован, а binary_search возвращает только true или false, а не там, где он нашел значение. Есть ли какая-нибудь функция, которая может дать мне лучшее из обоих миров?
Как найти значение в отсортированном векторе С++?
Ответ 1
std:: lower_bound сделает это за вас. Это в разделе эквивалентного поведения в верхней части для binary_search.
Ответ 2
Существует метод std::equal_range
, который даст вам пару, содержащую нижнюю и верхнюю границы подмножества, содержащие требуемое значение. Если оба из этих элементов в паре идентичны, то значение, которое вы искали, не существует.