C++ 类排序总结
来源:互联网 发布:杨辉三角java代码 编辑:程序博客网 时间:2024/05/01 11:56
对C++的自定义类进行排序的形式有:类数组,vector,优先级队列
而用于比较的函数一般有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(){//arraynum 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;//vectorvector<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_queuepriority_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语言排序算法总结
- c/c++排序算法总结
- C语言 冒泡排序 总结
- C语言数组排序总结
- C语言排序算法总结
- 常见排序算法总结(C++)
- c语言排序算法总结
- c语言排序算法总结
- c语言排序算法总结
- c语言排序算法总结
- 排序算法总结 (C语言版)
- 虚函数详解
- Android之drawable state各个属性详解
- Android 基础知识 二十
- Linux服务器安全教程
- 550 - Multiplying by Rotation
- C++ 类排序总结
- javascript中的setInterval和clearInterval方法
- 3.2 应用层与内核的通信方法 :访问数据的I/O方式、读写驱动程序、发送I/O控制码、内存共享
- html标签选择器的使用选择(学习小记)
- jsp验证码刷新
- 17点50分系列-如何平静的工作
- linux安全设置
- linux时间同步命令
- Observer pattern in Enterprise J2EE Architecture