C++中的lower_bound()函数和upper_bound()函数

目录

1:lower_bound()函数和upper_bound()函数的说明

2:代码展示


1:lower_bound()函数和upper_bound()函数的说明

嗯.....怎么说呢,这两个函数其实我们一般是用来做二分查找的,哦哦,跑题啦。

言归正传,lower_bound()函数接受三个参数,第一个是首地址,第二个是尾地址,第三个是一个数值,说三个参数,可能你对lower_bound()函数有点抽象,lower_bound()函数是用来查找在一定范围内大于等于某个值的位置(注意是大于等于,有等于的!!!)这样子说的话是不是在看下接受的三个参数就有点好理解了,第三个接受的参数就是那个大于等于的值,而第一和第二个参数就是查找的范围。

如:这里的a就是一个数组。lower_bound(a,a+n,9)就是在a[0]到a[n-1]这个范围内(也就是大于等于a[0]小于a[n]这个范围)查找第一个大于等于9的位置,如果想返回这个位置,还要再减去这个数组的首地址,也就是lower_bound(a,a+n,9)-a。

upper_bound()函数根lower_bound()函数的用法是一样的,不过它是查找在一定范围内大于某个值(注意它是没有等于的!!!)用法就不细说了哈!参照lower_bound()函数的用法就行了!!!

2:代码展示:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[10]={1,3,5,56,98};
	int ans=lower_bound(a,a+5,5)-a;
	int sum=upper_bound(a,a+5,5)-a;
	cout<<"第一个大于5的位置是"<<sum<<endl;
	cout<<"第一个大于等于5的位置是"<<ans<<endl;
	return 0;
}

如有错误,还请大佬指出!!! 


版权声明:本文为gaoqiandr原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。