lower_bound() 在升序的数组中 找到 >=目标元素的 下标最小的元素的地址
upper_bound() 在升序的数组中 找到 >目标元素的 下标最小的元素的地址
- // lower_bound() VS upper_bound()
- #include
- using namespace std;
-
- const int N=111;
- int a[N];
-
- inline int read()
- {
- int f=1;
- int data=0;
- char ch=getchar();
-
- while( !isdigit(ch) )
- {
- if( ch=='-' ) f=-1;
- ch=getchar();
- }
- while( isdigit(ch) )
- {
- data=( data<<3 )+( data<<1 )+( ch^48 );
- ch=getchar();
- }
- return data*f;
- }
-
- int main()
- {
- int n,i;
-
- n=read();
- for( i=1;i<=n;i++ )
- {
- a[i]=read();
- }
- sort( a+1,a+1+n );
- printf("lower_bound_pos: %d\n",lower_bound( a+1,a+1+n,3 )-a );
- printf("upper_bound_pos: %d\n",upper_bound( a+1,a+1+n,3 )-a );
-
- return 0;
- }
- // 5
- // 1 2 3 3 5
- // lower_bound_pos: 3
- // upper_bound_pos: 5