1、lower_bound( )
在从小到大的排序数组中:
lower_bound( begin, end, num):从数组的begin位置到end-1位置二分查找第一个大于等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
2、upper_bound( )
upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
3、具体应用
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
sort(a, a + 10);
int pos1 = lower_bound(a, a + 10, 7) - a; // 返回数组中第一个大于或等于被查数的值
int pos2 = upper_bound(a, a + 10, 7) - a; // 返回数组中第一个大于被查数的值
cout << pos1 << " " << a[pos1] << endl; // 输出 6 7
cout << pos2 << " " << a[pos2] << endl; // 输出 7 8
return 0;
}
本文详细介绍了C++标准库中的lower_bound和upper_bound函数在有序数组中的应用,包括它们的查找原理和在示例代码中的使用,展示了如何通过这两个函数获取元素在数组中的正确下标。
9万+

被折叠的 条评论
为什么被折叠?



