• 类内默认含有this指针,bool operator==(const T& a)
  • 类外则需要写两个参数,bool operator==(const T& a, const T& b)
class People
{public:string name;int id;People(string n, int i):name(n),id(i){}bool operator==(const People& a){return id == a.id && name==a.name;}bool operator<( const People& a){if(id == a.id)return name < a.name;return id < a.id;}
} ;bool operator==(const People& a, const People& b)
{return a.id == b.id && a.name==b.name;
}bool operator<(const People &a, const People& b)
{if(a.id == b.id)return a.name < b.name;return a.id < b.id;
}int main()
{vector<People> vec;vec.push_back(People("Michael",23));vec.push_back(People("James",23));vec.push_back(People("Kobe",24));vec.push_back(People("James",23));cout << "-----按id, then name排序----" << endl;sort(vec.begin(), vec.end()); // 调用operator<for(auto& v : vec)cout << v.id << " " << v.name << endl;cout << "------去重------------------" << endl;vec.erase(unique(vec.begin(), vec.end()),vec.end());// unique删除相邻的一样的,要先排序,unique调用 operator==for(auto& v : vec)cout << v.id << " " << v.name << endl;cout << "-----按名称排序-------------" << endl;sort(vec.begin(), vec.end(),[](People& a, People& b){return a.name < b.name;});for(auto& v : vec)cout << v.id << " " << v.name << endl;return 0;
}
运行结果:
-----按id, then name排序----
23 James
23 James
23 Michael
24 Kobe
------去重------------------
23 James
23 Michael
24 Kobe
-----按名称排序-------------
23 James
24 Kobe
23 Michael

C++类对象排序operator重载操作相关推荐

  1. LKDHelper使用LKDBHelper以实体类对象进行数据库的操作,例如新建一个新闻实体类,以这个类来

    LKDBHelper以实体类对象进行数据库的操作,例如新建一个新闻实体类, 很早的时候用过,是基于FMDB基础上封装的,现在记录下使用过程,年纪大了容易健忘 哈哈 #import "Base ...

  2. python类对象和实例对象

    类对象支持两种操作:属性引用和实例化. 属性引用 使用 Python 中所有属性引用所使用的标准语法: obj.name. 有效的属性名称是类对象被创建时存在于类命名空间中的所有名称. 因此,如果类定 ...

  3. python类的定义和创建_Python类对象的创建和使用

    通过前面章节的学习,我们已经学会如何定义一个类,但要想使用它,必须创建该类的对象. 创建类对象的过程,又称为类的实例化. 类名(参数) 定义类时,如果没有手动添加 __init__() 构造方法,又或 ...

  4. vba 定义类_神通广大的类,瞬间实例多个类对象

    你已选中了添加链接的内容蓝字关注,加微信NZ9668获资料信息  VBA解决方案   系列丛书作者  头条百家平台 VBA资深创作者 _______________________________ 大 ...

  5. C++学习笔记 - 阶段三:C++核心编程 - Chapter7:类和对象-C++运算符重载

    阶段三:C++核心编程 Chapter7:类和对象-C++运算符重载 运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 7.1 加号运算符重载 作用:实现两个自定义数 ...

  6. 【C++基础编程(二)】类和对象(重点)、文件操作

    4 类(class)和对象(object) C++面向对象的三大特性:封装.继承.多态 C++认为万事万物皆对象,对象上有其属性和行为 对于一些具有相同性质的对象,我们可以抽象称他们为类 4.1 封装 ...

  7. C++ 学习 ::【基础篇:17】:C++ 类与对象:运算符重载介绍、运算符重载函数(类内与类外区别)写法及简单设计实现

    本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...

  8. spring入门(11)-spring与hibernate整合完成增删改查的操作(封装HibernateTemplate模版类对象)

    今天是spring的最后一节课,这节课老师讲了spring与hibernate整合完成增删改查的操作,这是很重要的一节课,这也是第一次真正的实现spring结合Hibernate和数据库连接上,下面是 ...

  9. 实验二——函数重载,快速排序,类对象

    函数重载: #include<iostream> using namespace std; struct complex{ double real; double imaginary; } ...

最新文章

  1. Microsoft Dynamics Marketplace
  2. 干掉Navicat:正版,MySQL官方客户端真香!
  3. Linux内核模块编程系列1-极简内核模块编写
  4. C#中的参数传递(转)
  5. VSCode + Latex 配置
  6. Valid Sudoku
  7. PAT乙级-1070. 结绳(25)
  8. Asp.net上传文件限制,在大于5M的时候出现DNS解析错误,解决方法。
  9. 【HDU - 5094】 Maze (状态压缩+bfs)
  10. 类型的方法,以及关于Stringbuffer和String builder的相关补充
  11. Program Variant Scheduling job
  12. 如何解决chm类型的文件在Windows操作系统中无法打开
  13. 大数据Hadoop基本概念介绍
  14. python 视频保存_通过Python保存央视频某主题的视频地址
  15. 10本深入学习Spring框架的最佳书籍和课程
  16. 基于JAVA飞羽羽毛球馆管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  17. css3动画: 3d照片旋转transfrom
  18. 13. nginx四层 https代理https 前后端证书配置
  19. js打印window.print()图片打印
  20. 【简单的密码生成器】

热门文章

  1. 【解决问题】OpenCV(3.4.1) Error: Parsing error (xx.yaml(13): Incorrect indentation) in icvYMLParseValue
  2. java看图_看图吧,Java
  3. Linux进程全解6——进程的诞生和消亡
  4. 教你遇事最有水平的处理方法
  5. Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?...
  6. 开始学习ZendFramework框架了
  7. 屏蔽非法路由,好好上网!
  8. 关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)—的读后感...
  9. 制作jffs2根文件系统
  10. 苦练IoT应用开发,还能加速变现,这个机会别错过