通过传递子迭代器进行二进制搜索

时间:2016-09-03 01:11:26

标签: c++ search vector binary iterator

我正在尝试实现一个使用vector :: iterators的二进制搜索方法,因为它是递归调用的主要驱动程序。

到目前为止,我有:

template<typename T, typename iter> 
vector<int>::iterator binary_search(iter low, iter high, T key) {
    if (high < low) return -1;

    iter median = distance(low, high) / 2;

    if (*median == key) 
        return median;

    else if (*median > key) 
        return binary_search(low, median - 1, key);

    return binary_search(median + 1 , high, key);
}

但我收到编译错误:

  • &#39; binary_search&#39 ;:对重载函数的模糊调用
  • 多个重载函数实例&#34; binary_search&#34;匹配参数列表

通过电话

vector<int> nums = { 0,1,2,3,4,5,6,7,8,9 };
binary_search(nums.begin(), nums.end(), 1);

除此之外,如果您碰巧遇到其他问题,请告诉我!提前谢谢。

1 个答案:

答案 0 :(得分:0)

正如@PaulMcKenzie建议的那样,错误发生是因为我在std命名空间下编写,以及包含std :: binary_search的算法头。