一、upper_bound()
用法:upper_bound(iterator,iterator,val) 在set中,还可以s.upper_bound(val);
作用: 在一个左闭右开非递减序列中,找一个大于val的最小的数的地址,如果序列中都大于val,返回左区间,都不大于val,返回右区间。
**在一个递增序列[L,R)中,二分查找大于val最小的数*/
template<class F,class T>
F upper_boundSQ(F s,F e,T val)
{
//if(*s>val)return s;
F L=s,R=e-1;
//if(*R<=val)return e;
while(L<=R)
{
F mid=L+(R-L)/2;
if(L==R&&*mid>val)return mid;
else if(*mid<=val)
L=mid+1;
else
R=mid-1;
}
return L;
}
int main ()
{
vector<int> a;
a.push_back(1);
a.push_back(1);
a.push_back(2);
a.push_back(3);
a.push_back(4);
a.push_back(5);
//a.size()=6
/**upper_b