STL————-lower_bound和upper_bound算法

来源:互联网 发布:制作徽标的软件 编辑:程序博客网 时间:2024/05/08 18:42

参考地址:  http://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html  

图解:

ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置。

     ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)算法返回一个非递减序列[first, last)中第一个大于val的位置。

     lower_bound和upper_bound如下图所示:

 



代码:

#include<cstdio>  #include<cstring>    #include<algorithm>  using namespace std;  #define LL long long  LL shu[2010],s;  int main()  {      int t;scanf("%d",&t);      while(t--)    {          int n;scanf("%d",&n);          for (int i=0;i<n;i++)              scanf("%lld",&shu[i]);          sort(shu,shu+n);    第一个        int kk=lower_bound(shu,shu+n+1,2)-shu; //序列的长度是n+1,找出大于等于2的位置,这个位置是从0开始的。           printf("%lld\n",kk+1);      }      return 0;  }  


0 0
原创粉丝点击