重载运算符
直接上代码解释三种吧。
#include<iostream>
#include<cstring>
#include<string>
#include<cstdlib>
#include<vector>
#include<queue>
#include<cmath>
#include<map>
#include<algorithm>
using namespace std;
#define N 2021
#define mt(x) memset(x,0,sizeof x)
typedef long long ll;
void cn(ll x){cout<<x<<endl;}
void cs(string x){cout<<x<<endl;}
/*
结构体重载运算符 : +
*/
struct add
{
int a,b;
add()
{
a=1;
b=1;
}
add operator +(const add& y)const
{
add x;
x.a+=y.a;
x.b+=y.b;
return x;
}
void pr()
{
cout<<a<<','<<b<<endl;
}
};
struct ii
{
int x,y;
bool operator<(const ii& p)const
{
/*
首先一点,优先队列认为,从大到小排序
如下:
return x<p.x;
意思是:
满足当前 x<p.x 则 当前队列元素<p,那么队列会把这个放在p后面 ,也即从大到小。
*/
return x>p.x;//这是从小到大
}
/*
另一种写法:
friend bool operator <(ii a,ii b)
{
return a.x>b.x;//也是从小到大
}
*/
void pr()
{
cout<<x<<','<<y<<endl;
}
};
bool cmp(int x,int y)
{
return x<y;
//0互换位置, 1不变。
//那么当这语句就是当x>=y时交换位置,也即从小到大
}
void solve()
{
//1.结构体重载运算符
add a,b;
a=a+b;
a.pr();
puts("-----------------------\n");
//2.优先队列里结构体排序
priority_queue<ii>q;
q.push({2,1});
q.push({1,1});
q.push({3,1});
while(!q.empty())
{
ii now=q.top();q.pop();
now.pr();
}
//另外,这也可以直接用于结构体大小比较
ii m,n;
m.x=9;n.x=8;
if(m<n)cs("m>n");//因为实际return m.x>n.x; 才有if(m<n)cs("m>n");
else cs("m<n");
puts("-----------------------\n");
//3.sort排序cmp
int numb[]={1,2,3,6,5,4};
printf("lenght==%d\n",sizeof(numb)/sizeof(int));
//cn(numb.length);JAVA语句 才能直接求数组长度,下面sort就直接写6了
sort(numb,numb+6,cmp);
for(auto x:numb)cn(x);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
solve();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!