查找某个值在在数组中哪个位置,不一定这个值在这个数组中,只要这个值在这个数组范围中就可以(常用于根据经验值获取等级)

int a[] = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19};//数组中是经验值,它的下标+ 1就表示等级;

int count = sizeof(a) / sizeof(a[0]);

int * lFind = std::lower_bound(a, a + count, 2);

int avalue = lFind - a + 1;

lower_bound的使用

函数lower_bound()firstlast中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置

举例如下:

一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标则

int pos = lower_bound( number, number + 8, 3) - numberpos = 0.number数组的下标为0的位置。

int pos = lower_bound( number, number + 8, 9) - numberpos = 1,即number数组的下标为1的位置(即10所在的位置)。

int pos = lower_bound( number, number + 8, 111) - numberpos = 8,即number数组的下标为8的位置(但下标上限为7,所以返回最后一个元素的下一个元素)。

所以,要记住:函数lower_bound()firstlast中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置,且last的位置是越界的!!~

返回查找元素的第一个可安插位置,也就是“元素值>=查找值”的第一个元素的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值