Поскольку вы отправляете int
в качестве 3-го аргумента для binary_search
, просто operator<
будет недостаточно, поскольку вам необходимо поддерживать как int<T_value
, так и T_value<int
Предложениезаключается в создании класса компаратора с членами:
bool operator()(const T_value& lhs, int rhs) const
bool operator()(int lhs, const T_value& rhs) const
и отправке экземпляра в качестве четвертого параметра.
Кроме того, вектор должен быть отсортирован до вызова binary_search
.Вы можете сделать это с помощью std::sort
, но теперь вам нужно поддерживать третий тип сравнения, это может сделать третий член класса сравнения, например:
bool operator()(const T_value& lhs, const T_value& rhs) const
Конечный результат может выглядеть примерно так это