lower_bound()與upper_bound()是二分查找函數(用於有序區間)
lower_bound():找出序列中第一個大於等於x的數
upper_bound():找出序列中第一個大於x的數
對於一個數組a,在[1,n)的區間內查找大於等於x的數,函數就寫成:
用法1:
*lower_bound(a+1,a+1+n,num)=num;
//將a[]中第一個≥num的值改爲num
用法2:
int k=*lower_bound(a+1,a+1+n,num);
//k=a[]從1~n中第一個≥num的值
用法3:
int k=lower_bound(a+1,a+1+n,num)-a;
//k=a[]從1~n中第一個≥num的值的位置
如果要在一個下降序列裏尋找一個小於x的數呢?
這個亞子:
lower_bound(a + 1, a + 1 + n, x, greater <int> () );
greater()就是c++友情提供的方便的大於函數,這樣就不用自己動手寫一個cmp函數了
它們的實現方式是二分查找 ,存在的意義就是讓我們寫代碼更方便