lower_bound(x)查找>=x的元素中最小的一个,并返回指向该元素的迭代器;
upper_bound(x)查找>x的元素中最小的一个,并返回指向该元素的迭代器。
若要查找<x的元素中最大的一个,用lower_bound(a+1,a+n+1,m)-a-1;(返回>=m中的最小的一个,然后下标-1,就得到<x的最大一个);
若要查找<=x的元素中最大的一个,用upper_bound(a+1,a+n+1,m)-a-1;(返回>m中的最小的一个,然后下标-1,就得到<=x的最大一个);
如:定义数组[1,7]
for(int i=1;i<=7;i++) cin>>a[i];
1 1 2 3 5 6 8
最后要减去数组a
int k=lower_bound(a+1,a+n+1,1)-a;
k=1
注意:
前闭后开,如果没有找到,返回下标11,会越界。

浙公网安备 33010602011771号