首页 > 其他分享 >重载小于号

重载小于号

时间:2024-03-30 20:44:06浏览次数:17  
标签:sort 函数 运算符 重载 排序 小于号

重载小于号

2024.3.30

  • 先从用途出发,谈为什么要重载小于号?

重载小于号的情况多是为了排序自定义类型,例如c++中的结构体和类,无法直接通过sort函数排序,

int a[] = {4, 2, 1, 3}; 
sort(a, a + 4);

对于数组和stl来说可行,对于类就不能这么写

class Person{
    private:
        int height;
};
Person a[] = ...;
sort(a, a + 4)//错误;

不仅仅是sort函数,包括max,min等等的函数都需要重新适应
究其原因可能是这些函数在底层构建时用到了这些运算符,因此重载这些运算符就可用它们排序自定义类型。

  • 解释了使用重载小于号的原因后,再来看如何进行重载
bool operator <(const A& a)//这里一定要有const
{
     return this->num < a.num;//this是指向本结构体的
}

至于为什么用bool型,应该是和底层构造函数有关,笔者尚未参透。

标签:sort,函数,运算符,重载,排序,小于号
From: https://www.cnblogs.com/gepenguin/p/18105991

相关文章

  • 实验报告( 重载,引用,指针,交换,字符串的连接 )
       一、实验目的:掌握函数重载的使用方法深入理解指针的概念,掌握指针的使用方法理解引用的概念,掌握引用作为函数参数的使用方法二、实验仪器或设备:微型计算机三、总体设计(设计原理、设计方案及流程等)实验内容:1、设计一组重载函数add(),至少包括:charadd(char,int);......
  • js简单实现函数重载
    函数重载在前端开发中,JavaScript并不支持像其他语言(如C++或Java)中那样的函数重载,其中可以根据参数的不同来调用不同的函数。在JavaScript中,函数名是唯一的标识符,而不是函数签名。因此,定义具有相同名称但不同参数数量或类型的多个函数将会覆盖前面的定义。但是,你可......
  • 第11章 使用类——运算符重载(一)一个简单的运算符重载示例(Time类对象的加法)
    本文章是作者根据史蒂芬·普拉达所著的《C++PrimerPlus》而整理出的读书笔记,如果您在浏览过程中发现了什么错误,烦请告知。另外,此书由浅入深,非常适合有C语言基础的人学习,感兴趣的朋友可以自行阅读此书籍。运算符重载我们先了解下函数重载的概念,函数重载,也叫函数多态,指的是用......
  • C++从入门到精通——函数重载
    函数重载前言一、函数重载概念二、函数重载的分类参数类型不同的函数重载参数个数不同的函数重载参数类型顺序不同的函数重载三、函数重载的具体代码展示main.cpp四、为什么为什么C++支持函数重载,而C语言不支持函数重载呢前言函数重载是指在同一个作用域内,可以定......
  • C++取经之路(其二)——含数重载,引用。
    含数重载:函数重载是指:在c++中,在同一作用域,函数名相同,形参列表不相同(参数个数,或类型,或顺序)不同,C语言不支持。举几个例子:1.参数类型不同intAdd(intleft,intright){ cout<<"intAdd(intleft,intright)"<<endl; returnleft+right;}doubleAdd(doublele......
  • 操作符重载(operator overloading)
    操作符重载(operatoroverloading)成员函数所有的成员函数一定带着一个隐藏的参数示例代码:inlinecomplex&complex::operator+=(constcomplex&r){//调用者就是this,这是一个指针.+=符号作用在左边的数,左边的数就是this.->编译器自动会传入c2的指针//this......
  • C++重载操作符
    在C++中,重载操作符<和重载函数调用操作符()各自适用于不同的情况,它们的使用取决于你的具体需求。比较<和()重载操作符<排序和比较:当你需要定义一个类或结构体的对象如何进行排序或比较时,你会重载操作符<。这在使用标准库中的排序函数(如std::sort)、集合(如std::set......
  • 【C++】自增运算符重载及其效率问题
    自增运算符重载总所周知,C++的自增运算符有两种基本使用方法,在这里我们分别称为i++和++i,想必大家在C语言课上已经学了自增运算符和自减运算符,这里就不再赘述,这里主要讲解自增运算符重载,自减运算符完全可以触类旁通。首先了解什么是运算符重载。定义:运算符重载是面向对象编......
  • C++之函数的重载
    指函数名可以相同,提高复用性函数重载满足条件:1.同一个作用域下2.函数名称相同3.函数参数类型不同或者个数不同或者顺序不同注意:函数的返回值不可以作为函数重载的条件//函数重载需要函数都在同一个作用域下voidfunc(){ cout<<"func的调用!"<<endl;}vo......
  • 函数重载
    includeusingnamespacestd;//重载满足条件,可以提高复用性//1.同一个作用域下//2.函数名称相同//3.函数参数类型或者个数不同或者顺序不同//注意函数的返回值不可以做为函数重载的条件voidfunc(){cout<<1<<endl;}voidfunc(inta)//参数不一样{cout<<2<<e......