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,会越界。

posted on 2022-04-22 09:55  我疯故我在  阅读(39)  评论(0)    收藏  举报