关于重载和比较函数

以下内容都是个人见解,若有错误,还望指正!!

最近刚学习了C++中有关重载运算负中的知识,总算明白了如何通过重载一些运算符来改变一些容器的排序顺序 如 priority_queue优先队列的优先顺序和 sort 函数的二级排序,在不写比较函数的情况下如何通过重载运算负实现(如果对一个类有多个操作,sort建议还是用比较函数比较好)

//一般比较函数的写法 
struct Node{
	int a;
	int b;
};
bool compare(const Node x,const Node y){//按 a 的升序排列,如果a相等按 b 的升序;  
	if(x.a == b.a)
		 return x.b < y.b;
	return x.a < y.a; 
}
sort(arr,arr+n,compare);

这里我们对 < 符合做了重载,因为在一般的排序比较函数中默认的都是使用 < 符合来排序和比较的
//重载的两种写法 
struct Node{
	int a;
	int b;
	friend bool operator< (const Node& x,const Node& y)//友元函数的写法,这里的变量有2个,和比较函数比较相似好理解 
	{
		if(y.a == x.a)
			return x.b < y.b;
		return x.a > y.a;
	}
};
struct Node{
	int a;
	int b;
	bool operator< (const Node& y)const//这里就应用到一些运算符重载的知识,不是一两句话能说清楚的,不懂的
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值