Перегрузка операторов для lower_bound c++
У меня есть структура, состоящая из двух чисел. Они лежат в std::vector
. Я хочу использовать lower_bound. Какие операторы мне надо перегрузить, чтобы lower_bound сработал?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вы можете вообще ничего не переопределять, передав в функцию компаратор:
template< class ForwardIt, class T, class Compare >
ForwardIt lower_bound( ForwardIt first, ForwardIt last,
const T& value, Compare comp );
Просто по умолчанию, если вы не передаете компаратор, то используется оператор <
.
Ну и желательно (но, как ни странно, не обязательно¹ :)), чтобы диапазон был отсортирован с тем же компаратором.
¹ Требование алгоритма — разбиение по значению value
, т.е. все элементы, меньшие value
, находятся до всех элементов, больших value
. Понятно, что чтобы это выполнялось для произвольного value
, требуется отсортированность.