STL裡,這兩個函數用於在有序的數組裡找某個元素的位置,用法簡單提一下upper_bound(begin,end,key),start是查找的起點,end是終點,key是關鍵值,lower_bound()用法一樣,upper_bound()函數,返回第一個大於要找的值得位置(或者理解是這個元素的下一個位置),而Lower_bound是小於等於關鍵字的位置(或者理解為關鍵字第一次出現 的位置),
#includeusing namespace std; const int maxn=2222; int a[maxn]; int n; int my_upper_bound(int num) { int l=0; int h=n-1; while(l<=h) { int mid=(l+h)/2; if(numa[mid]) l=mid+1; else h=mid-1; } return l; } int main() { cin>>n; for(int i=0;i >a[i]; printf("my_upper_bound(4) 位置在 %d\n",my_upper_bound(4)); printf("my_lower_bound(4) 位置在 %d\n",my_lower_bound(4)); printf("lower_bound(4) 位置在 %d\n",lower_bound(a,a+n,4)-a); printf("upper_bound(4) 位置在 %d\n",upper_bound(a,a+n,4)-a); return 0; }