#include  <iostream>
#include <string>
#include <vector>
#include <algorithm> using namespace std; class Cat{
public:
int id;
string name;
int age;
Cat(int i,string n,int a){
id = i;
name =n;
age = a; }
}; /*
实现自己的比较函数:
格式:
bool compName(Obj1, Obj2);
注意:
1. 函数必须返回bool值
2. 函数如果返回true就表示该参数或者标准按这种顺序排序(即不用swap),返回false即会swap
3. 函数作为sort(beginIndex,endIndex,compName)的第三个参数; */
bool myCompare(Cat *a,Cat* b){
//先按id从小到大排序
if(a->id<b->id)return true;
else if(a->id>b->id)return false;
else {
//id相同
//按name的字典序排序
if(a->name.compare(b->name)<)return true;
else if(a->name.compare(b->name)>)return false;
else{
//name相同,按age从小到大排序
if(a->age<b->age)return true;
if(a->age>b->age)return false;
else{
//age也相同
//返回true
return true;
}
} }
} int main(){
vector<Cat*> v ;
v.push_back(new Cat(,"Jim",));
v.push_back(new Cat(,"Jima",));
v.push_back(new Cat(,"Jimb",));
v.push_back(new Cat(,"Jimc",));
v.push_back(new Cat(,"J",));
v.push_back(new Cat(,"Jim",));
v.push_back(new Cat(,"Jizzz",));
v.push_back(new Cat(,"Jim",));
v.push_back(new Cat(,"Jim",));
sort(begin(v),end(v),myCompare);
for(int i=;i<v.size();i++){
Cat * c = v[i];
cout<<c->id<<" "<<c->name<<" "<<c->age<<endl;
} } /*
output:
1 J 1
1 Jim 1
1 Jima 1
1 Jimb 1
1 Jimc 1
2 Jim 1
2 Jim 2
2 Jim 3
2 Jizzz 1 */

最新文章

  1. MAC破解软件
  2. Binary Tree Longest Consecutive Sequence
  3. YTU 2973: C语言习题5.25--文件操作2
  4. sql语句 优化技巧
  5. linux系统中如何进入退出vim编辑器,方法及区别
  6. Java学习笔记之:Java封装
  7. 基于ASP.NET的comet简单实现 http长连接,IAsyncResult
  8. 对依赖倒置原则(DIP)及Ioc、DI、Ioc容器的一些理解(转)
  9. JS创建类和对象(好多方法哟!)
  10. 服务确定(服务类收货ML81N)
  11. docker iotop :OSError: Netlink error: No such file or directory
  12. 切换npm源地址
  13. 第六课 Html5常用标签 html5学习1
  14. phantomjs 了解
  15. PHP二叉树
  16. ES练习代码
  17. WebService之Axis2(1):用POJO实现0配置的WebService
  18. Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 [Neutron Open vSwitch + VLAN Virtual Network]
  19. DWZ SSH2 菜单树--使用Struts2 标签(iterator/set/if 组合使用)
  20. eclipse/myeclipse添加插件3种方式

热门文章

  1. Linux_RHEL_设置网络
  2. 对redis的一些理解
  3. 【HTML】---HTML语义化
  4. Spring Web Flow 2.0 入门
  5. MyBatis框架原理2:SqlSession运行过程
  6. 手写BP(反向传播)算法
  7. c++ release和debug语句分离
  8. Solr 4.4.0增加core
  9. cmd打开指定目录技巧
  10. HDU 1052 Tian Ji -- The Horse Racing (贪心)(转载有修改)