要满足数组元素是递增的
upper_bound( a,a+n,x):从数组的begin位置到end-1位置二分查找第一个大于x的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
lower_bound( a,a+n,x):从数组的begin位置到end-1位置二分查找第一个大于或等于x的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
例如:
a[5]={1,2,3,4,5};
lower_bound(a,a+5,3)-a;返回值是2
upper_bound(a,a+5,3)-a;返回值是3
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[5]={1,2,3,4,5};
cout<<lower_bound(a,a+5,3)-a<<endl;
cout<<upper_bound(a,a+5,3)-a<<endl;
return 0;
}