c++ STL里lower_bound()与upper_bound()的用法

lower_bound()与upper_bound()是二分查找函数(用于升序区间)

lower_bound():找出序列中第一个大于等于x的数

upper_bound():找出序列中第一个大于x的数

对于一个数组a,在[1,n)的区间内查找大于等于x的数,函数就写成:

用法1:
*lower_bound(a+1,a+1+n,num)=num; 
//将a[]中第一个≥num的值改为num
用法2:
int k=*lower_bound(a+1,a+1+n,num); 
//k=a[]从1~n中第一个≥num的值
用法3:
int k=lower_bound(a+1,a+1+n,num)-a; 
//k=a[]从1~n中第一个≥num的值的位置

如果要在一个下降序列里寻找一个小于x的数呢?

这个亚子:

lower_bound(a+1,a+1+n,x,greater<int>());

greater()就是c++友情提供的方便的大于函数,这样就不用自己动手写一个cmp函数了

它们的实现方式是二分查找 ,存在的意义就是让我们写代码更方便

题目运用:

导弹拦截

你可能感兴趣的:(讲解,STL,二分)