lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个大于等于value 的值。
template<typename ForwardIterator,typename T>
ForwardIterator lower_bound(ForwardIterator first,
ForwardIterator last,T &value){
while(first!=last){
auto mid=next(first,distance(first,last)/2);
if(value>*mid)first=++mid;
else last=mid;
}
return first;
}
template<typename ForwardIterator,typename T>
ForwardIterator upper_bound(ForwardIterator first,
ForwardIterator last,T &value){
while(first!=last){
auto mid=next(first,distance(first,last)/2);
if(value>=*mid)first=++mid;
else last=mid;
}
return first;
}