关于lower_bound()和upper_bound()
Posted cadcadcad
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于lower_bound()和upper_bound()相关的知识,希望对你有一定的参考价值。
关于lower_bound()
和upper_bound()
:
参考:关于lower_bound( )和upper_bound( )的常见用法
注意:查找的数组必须要是排好序的。因为,它们查找的方式也是二分查找,所以,复杂度为log(n)
①从小到大排序
lower_bound(begin,end,num)
:从数组的begin
位置到end-1
位置二分查找第一个大于或等于num
的数字,找到并返回该数字的地址,不存在则返回end
。通过返回的地址减去起始地址begin
,得到找到数字在数组中的下标。
upper_bound(begin,end,num)
:从数组的begin
位置到end-1
位置二分查找第一个大于num
的数字,找到并返回该数字的地址,不存在则返回end
。通过返回的地址减去起始地址begin
,得到找到数字在数组中的下标。
②从大到小排序
lower_bound(begin,end,num,greater<type>())
:从数组的begin
位置到end-1
位置二分查找第一个小于或等于num
的数字,找到并返回该数字的地址,不存在则返回end
。通过返回的地址减去起始地址begin
,得到找到数字在数组中的下标。
upper_bound(begin,end,num,greater<type>())
:从数组的begin
位置到end-1
位置二分查找第一个小于num
的数字,找到并返回该数字的地址,不存在则返回end
。通过返回的地址减去起始地址begin
,得到找到数字在数组中的下标。
总结:如果是lower_bound()
会有等于,upper_bound()
没有等于,默认是大于(或等于),加了greater<type>()
是小于(或等于)
以上是关于关于lower_bound()和upper_bound()的主要内容,如果未能解决你的问题,请参考以下文章