1.改写comp从大到小排序。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool comp(const int &a,const int &b)
{
return a>b;
}
int main()
{
vector<int>v;
v.push_back(13);
v.push_back(23);
v.push_back(03);
v.push_back(233);
v.push_back(113);
sort(v.begin(),v.end(),comp);//
int i=0;
for(i=0;i<5;i++)
{
cout<<v[i]<<endl;
}
system("pause");
return 0;
}
运行结果:
233
113
23
13
3
什么会这样呢?比较时sort函数根据comp函数进行判断输的大小,系统默认
2.对结构体排序
#include<iostream> #include<vector> #include<algorithm> using namespace std; struct ss { int a,b; }; bool comp(const ss &a,const ss &b) { return a.a<b.a; } int main() { vector<ss>v; ss s1,s2,s3,s4,s5; s1.a=4;s1.b=23; s2.a=1;s2.b=213; s3.a=2;s3.b=231; s4.a=5;s4.b=123; s5.a=3;s5.b=223; v.push_back(s1); v.push_back(s2); v.push_back(s3); v.push_back(s4); v.push_back(s5); sort(v.begin(),v.end(),comp); int i=0; for(i=0;i<5;i++) { cout<<v[i].a<<" "<<v[i].b<<endl; } system("pause"); return 0; }
比如ss结构体中a代表的是索引号,b代表的是索引对应的值,那么我想按索引排序,通过改写comp函数即可实现。
结果:
1 213
2 231
3 223
4 23
5 123
请按任意键继续…
方法2:
#include<iostream> #include<vector> #include<algorithm> using namespace std; struct ss { int a, b; bool operator < (const ss &s)const{ return a < s.a; } }; int main() { vector<ss>v; ss s1, s2, s3, s4, s5; s1.a = 4; s1.b = 23; s2.a = 1; s2.b = 213; s3.a = 2; s3.b = 231; s4.a = 5; s4.b = 123; s5.a = 3; s5.b = 223; v.push_back(s1); v.push_back(s2); v.push_back(s3); v.push_back(s4); v.push_back(s5); sort(v.begin(), v.end()); int i = 0; for (i = 0; i<5; i++) { cout << v[i].a << " " << v[i].b << endl; } return 0; }