upper_bound()和lower_bound()

upper_bound()和lower_bound()在STL常用,配合起STL能大幅度减少代码量,因为upper_bound()和lower_bound()本身就是二分的一个集合函数,upper_bound()作用为返回一个数组中大于某个值的地址,lower_bound()作用为返回一个数组中大于等于某个值的地址,值得注意的是他们都返回的是地址,返回的是地址看起来很复杂,但减去数组首地址+1即可得到该数在数组中的位置,即使不减首地址,使用迭代器iterator一样能取出该值。

下面演示下如何使用upper_bound()和lower_bound():

普通数组:

返回在数组a中大于cnt的地址:upper_bound(a,a+n,cnt)

返回在数组a中大于等于cnt的地址:lower_bound(a,a+n,cnt)

返回在数组a中大于cnt的位置:(upper_bound(a,a+n,cnt)-a)+1

返回在数组a中大于等于cnt的位置:(lower_bound(a,a+n,cnt)-a)+1

vector:

返回在数组a中大于cnt的地址:upper_bound(v.begin(),v.end(),cnt)

返回在数组a中大于等于cnt的地址:lower_bound(v.begin(),v.end(),cnt)

返回在数组a中大于cnt的位置:(upper_bound(v.begin(),v.end(),cnt)-a)+1

返回在数组a中大于等于cnt的位置:(lower_bound(v.begin(),v.end(),cnt)-a)+1

全部评论

相关推荐

牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务