关于lower_bound的使用

本文介绍了C++ STL中的lower_bound和upper_bound函数的使用方法,这两个函数可以帮助我们在有序数组中快速查找特定元素的位置。通过示例说明了如何使用这两个函数,并展示了如何利用它们来统计某个值在数组中出现的次数。

突然发现lower_bound是一个挺好用的东西,

在学习最长不下降子序列的nlogn的算法的时候看到的,C++党写起二分来一行- -P党一排233

感觉如果到时候需要用上二分的话,能用lower_bound代替真是省事啊...有时间的话,再好好的研究下

这里先简单的mark一下lower_bound的用法;

 

首先说一下lower_bound是用来求在first和last中的前闭后开区间进行二分查找,返回大于或等于x的第一个元素位置

比如,你现在需要求a[i](i=1,2,3......)的第2个数到第10个数中,大于或等于x的第一个元素的位置;(注意这里是从1开始定义)

因为lower_bound返回的是最小的指针,所以还要-a;

 

pos=lower_bound(a+2+1,a+10+1,x)-a;

具体的运用可以看BZOJ1609;

 

另外提一下,upper_bound的用法和lower_bound类似,返回的是指向满足a[i]>k的最小指针(区别在于,不含等号)

 

我们可以用他们求出有序数组a有多少个相同的k

upper_bound(a,a+n,k)-lower_bound(a,a+n,k)

 

转载于:https://www.cnblogs.com/polebug/p/4050835.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值