解释:
1.lower_bound()
lower_bound它有四个参数, 第一个和第二个是给定区间起点和终点的指针,第三个参数是要查找的数,第四个为比较函数(可不加),它的作用原理是在给定的区间中进行二分查找,这个二分区间是前开后闭的,他返回第一个大于等于它的函数指针,例如数组 a[100] = {3, 4, 5, 6, 7, 10, 12, 34, 55}; 想找2的话,返回就返回第一个a[0]的位置,找8,就返回a[5]的位置,如果找99,比任何数都大,那么就返回数组中最后一个的下一个位置,就返回9,所以,这是可以越界的.
2.upper_bound()
upper_bound() 函数返回第一个大于 (没有等于)查找的数的指针。其他与lower_bound() 一致。
用法:
在不加比较函数的情况下:
int a[]={0,1,2,2,3};
printf("%d\n",lower_bound(a,a+5,2,cmp)-a);
printf("%d\n",upper_bound(a,a+5,2,cmp)-a);
结果 : 2 4
加上比较函数:
bool cmp(int a,int b)
{
return a<b;
}
int main()
{
int a[]={0,1,2,2,3};
printf("%d\n",lower_bound(a,a+5,2,cmp)-a);
printf("%d\n",upper_bound(a,a+5,2,cmp)-a);
return 0 ;
}
结果仍是 2 4
如果在比较函数中加上等于号,那两个函数的功能就反过来了。
end.