標籤:style http 使用 資料 io re
一、關於sort函數
sort()排序函數預設是從小到大,
a={5,3,2,1,6 };
sort(a,a+n);
//輸出是1 2 3 5 6
?這裡如果要從到小排序,則有兩種方式可以滿足
(1)寫一個cmp()函數,定義大小關係
bool cmp(int a,int b)
{
return a>b;
}
a={5,3,2,1,6}
sort(a,a+5,cmp)
(2)直接使用
a={5,3,2,1,6}
sort(a,a+5,greater<int>()) //注意後面的()不能少
以上都是sort()函數針對單一資料型別的。對結構體的排序如下:(1)寫一個cmp函數,定義結構體的大小關係
struct Point{
int x,y;
}p[maxn];
bool cmp(Point a,Point b)
{
return a.x<b.x;//按照x從小到大排序
}
(2)在結構體裡面重載運算子<
struct Point{
int x,y;
bool operator< (const Point& a) const
{
return x>a.x;//x從大到小排序
}
}p[maxn];
sort(p,p+n);
如果要想結構體也能使用greater<Point>()和less<Point>()則:要使用greater<Point>() 需要重載">"要使用less<Point>() 需要重載"<"
二、關於優先隊列優先隊列的預設排序是從大到小。
int num[10]={14,10,56,7,83,22,36,91,3,47};
priority_queue<int> q;
自訂排序方法:(1)使用系統的比較函數
int num[10]={14,10,56,7,83,22,36,91,3,47};
priority_queue<int,vector<int>,greater<int> > que;/////採取最小優先策略,即按從小到大的順序排列
priority_queue<int,vector<int>,less<int> > que1; ////採取最大優先策略,即按從大到小的順序排列
(2)重載<操作符定義優先順序
struct student
{
string name;
float score;
/////重載<運算子來實現改變優先規則
bool operator < (const student &s) const
{
//////按score由小到大排列
return score>s.score
//////按score由大到小排列;
//return score<s.score;
}
};
(3)通過
來自為知筆記(Wiz)