今天调程序的时候,犯了一个错误。
使用binary_search的时候,没有先把vector sort一下,看了下c++ reference手册的描述
binary_search的实现大致如下:
template <class ForwardIterator, class T>
bool binary_search ( ForwardIterator first, ForwardIterator last, const T& value )
{
first = lower_bound(first,last,value);
return (first!=last && !(value<*first));
}
lower_bound的实现大致如下:
template <class ForwardIterator, class T>
ForwardIterator lower_bound ( ForwardIterator first, ForwardIterator last, const T& value )
{
ForwardIterator it;
iterator_traits<ForwardIterator>::difference_type count, step;
count = distance(first,last);
while (count>0)
{
it = first; step=count/2; advance (it,step);
if (*it<value) // or: if (comp(*it,value)), for the comp version
{ first=++it; count-=step+1; }
else count=step;
}
return first;
}
本文分享了在使用C++标准库函数binary_search时容易忽略的重要步骤——对vector进行排序。通过具体代码示例,解释了binary_search及辅助函数lower_bound的工作原理。
1046

被折叠的 条评论
为什么被折叠?



