0. 修改 排序方式(升序 改为 降序)
bool cmp(int a,int b)
{
return a>b;
}
sort(x,x+4,cmp);
1. 排序向量的一部分
参考文献
#include <iostream>
#include <algorithm>
#include <vector>
bool myfunction (int i,int j) { return (i<j); }
struct myclass {
bool operator() (int i,int j) { return (i<j);}
} myobject;
int main () {
int myints[] = {32,71,12,45,26,80,53,33};
std::vector<int> myvector (myints, myints+8);
std::sort (myvector.begin(), myvector.begin()+4);
std::sort (myvector.begin()+4, myvector.end(), myfunction);
std::sort (myvector.begin(), myvector.end(), myobject);
std::cout << "myvector contains:";
for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
2. 一个vector的各个元素是 class的 对象排序
class Edge {
private:
int l,r,val;
};
bool sortByVal(Edge &lhs, Edge &rhs) {
return lhs.getVal() < rhs.getVal();
}
sort(edge.begin(), edge.end(), sortByVal);
3. 结构体的二级排序
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct link
{
int a,b;
};
bool cmp(link x,link y)
{
if(x.a==y.a)
return x.b>y.b;
return x.a>y.a;
}
int main()
{
link x[4];
for(int i=0;i<4;i++)
cin>>x[i].a>>x[i].b;
sort(x,x+4,cmp);
for(int i=0;i<4;i++)
cout<<x[i].a<<' '<<x[i].b<<endl;
return 0;
}
4.