lower_bound() 与upper_bound() 的用法

解释:
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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值