本文主要是介绍upper_bound()与low_bound() 及其返回值问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前提:一个非降序列!!!!!!
#include "algorithm"
upper_bound() 与 lower _bound()都是 < algorithm > 的一个二分插画早函数 比较高效(log的时间复杂度)并且 方便
语法格式 lower_bound(数组首地址,数组尾地址,待查元素的值) 由于函数返回的值是 迭代器(似乎是???)所以还要减去数组首地址才是那个值的下标
lower_bound(数组首地址,数组尾地址,待查元素的值)-数组首地址
要下标,就减去数组首地址
要第几个元素(>0),就减去数组首地址+1
要获得值,返回值加*
关于返回值
- 没有这个元素的时候,两个元素的返回值是一样的。1 2 4 5 这个序列,upp(3)和low(3)都返回2(下标)
- 如果只有一个待查元素,low返回那个元素的位置,而upper返回那个元素的位置的后一个位置。1 2 4 5 这个序列upper(2)返回下标2而lower(2)返回下标1
- 多个待查元素,lower返回那个元素的位置,upp返回那多个元素中的最后一个的后一个位置。1 2 2 4 5 这个序列 upper(2)返回下标3的位置,lower(2)返回下标1的位置
这篇关于upper_bound()与low_bound() 及其返回值问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!