1. 程式人生 > >STL學習 sort,lower_bound/upper_bound函式

STL學習 sort,lower_bound/upper_bound函式

剛學stl,總結下。
兩個函式都是基於二分查詢的方法,所以在使用這兩個函式前,得將序列排序為有序序列。
排序就可以利用sort函式。
sort(begin,end,條件)如果不寫條件,預設是從小到大排序。
函式功能是:從begin開始(包括begin)到end-1(包括end-1)按條件進行排序。begin和end都是地址。
如果從大到小排序,可以寫個函式,將其函式名放在條件處。

bool big(int a,int b)
{
        return a>b;
}

則sort中(begin,end,big);
也可以根據結構體中某個變數的大小給結構體陣列進行排序(常在貪心題目中)。
例如

 struct info
   {
        int a;
        int b;
   }stu[10];
    bool big(info t1,info t2)
    {
         return t1.a>t2.a;
    }
    sort (stu,stu+10,big);

則根據a的大小,給結構體陣列 stu[10]進行從大到小的排序。

lower_bound(begin,end,所需查詢元素),其中begin和end都是地址。元素可以是數字,字串,字元。
函式的功能是:在從begin開始(包括begin)到end-1(包括end-1)之間的元素中查詢 第一個大於或者等於

符合條件的元素,如果存在就返回該 元素的地址 ,不存在的話就返回 end 。
可以通過返回值 減去 首元素的地址 來計算所需查詢元素的下標。

upper_bound(begin,end,所需查詢元素)
功能是:在從begin開始(包括begin)到end-1(包括end-1)之間的元素中查詢 第一個大於 所需查詢的元素,如果存在就返回該 元素的地址 ,不存在的話就返回 end 。