参考地址: 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;
}