lower_bound()和upper_bound()的常见用法
lower_bound()
lower_bound(a+1,a+1+n,x):从数组的a+1位置到a+n位置二分查找第一个大于或等于x的数字,找到返回该数字的地址,不存在则返回a+1+n。通过返回的地址减去起始地址a,得到找到数字在数组中的下标。
#include<bits/stdc++.h>
using namespace std;
int a[105];
int n,x;
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cin>>x;
sort(a+1,a+1+n);
cout<<lower_bound(a+1,a+1+n,x)-a;
}
返回第一个大于等于目标值的下标
upper_bound()
upper_bound(a+1,a+1+n,x):从数组的a+1位置到a+n位置二分查找第一个大于x的数字,找到返回该数字的地址,不存在则返回a+1+n。通过返回的地址减去起始地址a,得到找到数字在数组中的下标。
#include<bits/stdc++.h>
using namespace std;
int a[105];
int n,x;
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cin>>x;
sort(a+1,a+1+n);
cout<<lower_bound(a+1,a+1+n,x)-a;
}

浙公网安备 33010602011771号