|
if (value == *mid)
return mid;
if (value < *mid)
hi = mid;
else
lo = mid+1;
}
return last;
}
现在可以看出,first和last两个指针是任意类型的指针,即它们和类型T是没有关系的。这时就用到了迭代器(Iterator)的概念,因为这里排序要对容器任意存取,我们把first和last的类型命名为“RandomAccessIterator”。代码改写如下:
template <class RandomAccessIterator, class T>
RandomAccessIterator binary_search(RandomAccessIterator first, RandomAccessIterator last, const T& value)
{
RandomAccessIterator not_found = last, mid;
while (first != last)
{
mid = first+(last-first)/2;(责任编辑:admin) |
