3

我在使用较新版本的 gcc 的系统上编译使用 std::lower_bound 的代码时遇到了一些问题。根据我的测试,4.1 有效,但 4.6 失败。

这是相关的代码片段:

template <typename RandomAccessIterator, typename Value, typename Comparer>
int my_binary_search(RandomAccessIterator const  first, RandomAccessIterator const  last, Value const& value, Comparer comparer)
{
    RandomAccessIterator it(std::lower_bound(first, last, value, comparer));
    //some more code below
}

我看到的错误是:

error: no matching function for call to ‘lower_bound(const __gnu_cxx::__normal_iterator<int*, std::vector<int> >&, const __gnu_cxx::__normal_iterator<int*, std::vector<int> >&, const int&, bool (*&)(int, int))’
testing.h:37:75: note: candidate is:
/usr/include/c++/4.6/bits/stl_algobase.h:936:5: note: template<class _ForwardIterator, class _Tp> _ForwardIterator std::lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&)

有人对如何解决这个问题有想法吗?

4

1 回答 1

3

对于在谷歌上找到这个的任何人:我有同样的问题包括“功能”和“列表”,没有给我任何错误 lower_bound wasnt defined 或任何东西,只是它找不到匹配的函数。

包括“算法”就成功了。将近一个小时的时间来寻找这样一个愚蠢的东西

于 2014-03-12T02:28:36.973 回答