C++ 类排序总结
2013-07-24 23:03
141 查看
对C++的自定义类进行排序的形式有:类数组,vector,优先级队列
而用于比较的函数一般有function object和function
总结起来如下:
而用于比较的函数一般有function object和function
总结起来如下:
#include<iostream> #include<algorithm> #include<queue> #include<vector> using namespace std; class num { public: int first; int second; num(){} void set(int a,int b) { first = a; second = b; } }; class Cmp_Class { public: bool operator()(num a,num b) { return a.first < b.first; } }; bool operator<(const num &a,const num &b) { return a.first < b.first; } bool compare_function(const num &a,const num &b) { return a.first < b.first; } Cmp_Class cmp_object; int main() { //array num a[4]; a[0].set(100,2); a[1].set(2,1); a[2].set(6,9); a[3].set(0,-1); sort(a,a + 4); for(int i = 0 ; i < 4 ; i ++) cout << a[i].first << " " << a[i].second << endl; cout << endl; a[0].set(100,2); a[1].set(2,1); a[2].set(6,9); a[3].set(0,-1); sort(a,a + 4,compare_function); for(int i = 0 ; i < 4 ; i ++) cout << a[i].first << " " << a[i].second << endl; cout << endl; a[0].set(100,2); a[1].set(2,1); a[2].set(6,9); a[3].set(0,-1); sort(a,a + 4,cmp_object); for(int i = 0 ; i < 4 ; i ++) cout << a[i].first << " " << a[i].second << endl; cout << endl; //vector vector<num> v; a[0].set(100,2); a[1].set(2,1); a[2].set(6,9); a[3].set(0,-1); v.clear(); for(int i = 0 ; i < 4 ; i ++) { v.push_back(a[i]); } sort(v.begin(),v.end()); for(int i = 0 ; i < 4 ; i ++) cout << v[i].first << " " << v[i].second << endl; cout << endl; a[0].set(100,2); a[1].set(2,1); a[2].set(6,9); a[3].set(0,-1); v.clear(); for(int i = 0 ; i < 4 ; i ++) { v.push_back(a[i]); } sort(v.begin(),v.end(),compare_function); for(int i = 0 ; i < 4 ; i ++) cout << v[i].first << " " << v[i].second << endl; cout << endl; a[0].set(100,2); a[1].set(2,1); a[2].set(6,9); a[3].set(0,-1); v.clear(); for(int i = 0 ; i < 4 ; i ++) { v.push_back(a[i]); } sort(v.begin(),v.end(),cmp_object); for(int i = 0 ; i < 4 ; i ++) cout << v[i].first << " " << v[i].second << endl; cout << endl; //priority_queue priority_queue<num,vector<num>,Cmp_Class> p; a[0].set(100,2); a[1].set(2,1); a[2].set(6,9); a[3].set(0,-1); for(int i = 0 ; i < 4 ; i ++) { p.push(a[i]); } while(!p.empty()) { num t = p.top(); cout << t.first << " " << t.second << endl; p.pop(); } return 0; }
相关文章推荐
- 【排序】快速排序C++实现总结
- c++排序问题(总结)
- 排序基础算法总结与c++实现
- 【C/C++】排序总结
- 【C/C++】排序总结
- C++排序问题总结
- C++ sort 排序(降序、升序)使用总结
- 【算法总结系列-2】有趣的排序-冒泡排序-C++演示
- C++常用排序总结
- C++ sort 排序(降序、升序)使用总结
- C++ 排序总结
- c++ 八大排序代码总结
- c++排序方法总结(持续更新)
- 大数查找排序总结(c++面试)
- c++排序问题(总结)
- C/C++访问Lua中table元素方法总结
- 算法:冒泡排序(Bubble Sort)、插入排序(Insertion Sort)和选择排序(Selection Sort)总结
- C/C++中内存区域划分大总结
- C/C++ 之 left operand must be l-value 错误提示总结
- C++——算法基础之排序——快速排序