本文主要是介绍lower_bound upper_bound的变种用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
lower_bound 满足!(where < standard)条件的where最小的, 即 where >= standard(=优先) 即 (standard < where || standard == where) (==优先 但不调用operator==)
upper_bound 满足standard < where中where最小的,即 where > standard (standard < where)
当不存在stand==where时,lower_bound等价于upper_bound
当lower_bound(begin, end, standard, operator<=) 时, 满足!(where <= standard)条件的where中最小的 即 满足where > standard条件的where中最小的,也就等价于upper_bound
当upper_bound(begin, end, standard, operator<=) 时, 满足standard <= where条件的where中最小的 即等价于 lower_bound
所以*_bound的operator带=号并无意义
如果想得到 整数部分为standard的实数区间 [a, a+0.999999……] itrEnd = (where > stand + 0.9999999…… 中最小where),也就是where >= stand + 1的where 也就是 itrEnd = lower_bound(begin, end, stand+1)
注,在计算机里 a+0.999999999…… < a+1
要得到 begin[a, a] end 用 [ lower_bound(a), upper_bound(a) )
要得到 begin[a, b] end 用 [ lower_bound(a), upper_bound(b) )
要得到 begin[a, a+0.999999……] end 用 [ lower_bound(a), upper_bound(a+0.99999……) ) 等价于[ lower_bound(a), lower_bound(a+1))
要搜索一个< a的最大值,用lower_bound(a)-1 (注意检查区间是否合法)
要搜索一个实数a.xxxxxxx,用lower_bound(a+1)-1 (注意检查区间是否合法)
以上提到的搜索实数的方法,适用于pair< A,B>
这篇关于lower_bound upper_bound的变种用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!