关于lower_bound以及uypper_bound的一些理解

今天又碰到了有关于lower_bound的这一类题,做的过程中还是发现了自己对这两个函数,运用的十分不娴熟,而且还存在一定的漏洞,今天在这里详细的整理一下。

如果想查看两个函数的源代码点这里

1、首先说一下使用这两个函数的前提:数组必须是已经排序好的!!!

很多人都会犯过这个问题,因为这两个函数是使用的二分查找,所以必须先对数组进行排序,否则很难想自己预期的那样,找到想找的地方的值,而很多人虽然知道是二分,但是却忽略掉了,只记得这个函数的作用

2、如果没有找到那个值,会返回越界的结果N。

这个也是二分查找的特性,因为数组的定义范围一般都是0—N-1,当无法找到值会返回N,越界

3、这两个函数的组合应用

lower函数查找的是 大于等于 目标值的第一个位置。
upper函数查找的是 大于 目标值的第一个位置。
(以上是最基本的用法,下面介绍一种拓展方法)
所以可以使用这两个函数的组合,来确定目标值是否存在,并且存在几个,如果两个函数的返回值相同,则说明目标值不存在,如果不相同,则两者的差,就是目标值存在的个数。

4、例题

稍后会进行补充

猜你喜欢

转载自blog.csdn.net/NCC__dapeng/article/details/82078168