我正在尝试实现一个使用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);
}
但我收到编译错误:
通过电话
vector<int> nums = { 0,1,2,3,4,5,6,7,8,9 };
binary_search(nums.begin(), nums.end(), 1);
除此之外,如果您碰巧遇到其他问题,请告诉我!提前谢谢。
答案 0 :(得分:0)
正如@PaulMcKenzie建议的那样,错误发生是因为我在std命名空间下编写,以及包含std :: binary_search的算法头。