lower_bound与upper_bound实验说明
实验程序如下:
//使用lower_bound进行查找
#include <bits/stdc++.h>
using namespace std;
long long a[10000000];
int main()
{
long long n,m,x1,x2,x3,x4;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
cin>>m;
sort(a+1,a+1+n);
x1 = lower_bound(a+1,a+1+n,m)-a;
x2 = upper_bound(a+1,a+1+n,m)-a;
x3 = lower_bound(a+1,a+1+n,m)-a-1;
x4 = upper_bound(a+1,a+1+n,m)-a-1;
cout<<x1<<endl;
cout<<x2<<endl;
cout<<x3<<endl;
cout<<x4<<endl;
}
输入数据
8
1 3 3 5 5 5 5 99
当输入5时
x1=4
x2=8
x3=3
x4=7
于是
lower_bound()查找的是大于等于输入数字的最靠左的位置
upper_bound()查找的是严格大于输入数字的最靠左的位置
lower_bound()-1查找的是严格小于输入数字的最靠右的位置
upper_bound()-1查找的是小于等于输入数字的最靠右的位置
当输入120时
x1=9,指向的是一个空位置,于是此时要注意判断是否过界
x2=9
x3=8
x4=8
当输入0时
x1=1
x2=1
x3=0,指向的是一个空位置,于是此时要注意判断是否过界
x4=0

浙公网安备 33010602011771号