STL學習 sort,lower_bound/upper_bound函式
阿新 • • 發佈:2018-12-26
剛學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)之間的元素中查詢 第一個大於或者等於
可以通過返回值 減去 首元素的地址 來計算所需查詢元素的下標。
upper_bound(begin,end,所需查詢元素)
功能是:在從begin開始(包括begin)到end-1(包括end-1)之間的元素中查詢 第一個大於 所需查詢的元素,如果存在就返回該 元素的地址 ,不存在的話就返回 end 。