- 参考资料
- 一般类型的排序(int,double,char)
- 结构体类型的排序(struct)
参考资料
关于C++中vector和set使用sort方法进行排序
作者注:上面这篇文章写得相当全面,包括对vector和set中不同数据类型(包括结构体)的排序,还有一些还没看懂……特作此摘录,供当前及日后的学习
一般类型的排序(int,double,char)
在默认情况下,调用sort函数执行的是从小到大的排序
1 2 3 4 5 6 7 8 9 10
| vector<int> vec; for (int i = 0; i < 10;i++) { vec.push_back(rand()); } sort(vec.begin(), vec.end()); for (vector<int>::iterator it = vec.begin(); it < vec.end(); it++) { cout << *it << " "; }
|
结果:

结构体类型的排序(struct)
结构体定义如下:(试验样本)
1 2 3 4 5 6
| typedef struct ClassDis { double distance; int class1; int class2; }ClassDis;
|
需要自己定义一个比较函数(因为sort默认从小到大排序,因此我们只需要定义什么情况属于“小于”就行了)
1 2 3 4 5
| bool comp(const ClassDis &a, const ClassDis &b) { return a.distance < b.distance; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| vector<ClassDis> ddd;
for (double a = 0; a < 10;a++) { ClassDis aaa{ (double)rand(), (int)a, (int)(a + 2) }; ddd.push_back(aaa); }
sort(ddd.begin(), ddd.end(), comp);
for (vector<ClassDis>::iterator it = ddd.begin(); it < ddd.end(); it++) { cout << it->distance << "," << it->class1 << "," << it->class2 << endl; }
|
结果:
