Я пытаюсь реализовать пользовательский бинарный поиск для запуска вектора дат.C++ <неразрешенный перегруженный тип функции> с функцией сравнения
Моя бинарная функция поиска заключается в следующем:
template <typename RandomAccessIterator, typename Value, typename Comparer>
inline int binary_search(RandomAccessIterator const first, RandomAccessIterator const last, Value const& value, Comparer comparer)
{
RandomAccessIterator it(std::lower_bound(first, last, value, comparer));
if (it == last || comparer(*it, value) || comparer(value, *it))
return distance(first,last);
return distance(first,it);
}
Компаратор Я использую определяется как:
template <class T>
inline bool cmp(T lhs,T rhs)
{
return lhs<rhs;
}
Эти два компилируется без проблем, однако, я получаю ошибку компиляции, когда я попробуйте вызвать функцию binary_search, используя следующий код:
binary_search(date_list.begin(),date_list.end(),date2,cmp)
whe re date_list - это вектор, содержащий даты, date2 - int.
Точное сообщение об ошибке:
error: no matching function for call to ?binary_search(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, int&, <unresolved overloaded function type>)?
Любые идеи о том, как решить эту проблему?
Спасибо! Это то, чего я отсутствовал, прекрасно работает. – user788171