C/C++教程

C++重载运算符

本文主要是介绍C++重载运算符,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

由于经常忘记如何重载运算符,所以有了这篇文章
重载运算符的语句如下:
返回类型 operator重载运算符(参数){内容}
比如说:

bool operator>(const node& x){
	return a>x.a;
}

这样我们就重载了大于号“\(>\)”,用来比较\(node\)结构体中\(a\)变量的大小。

#include<iostream>
#include<cstdio>
using namespace std;
struct node{
	int a,b;
	bool operator>(const node& x){
		return a>x.a;//或者是 return this->a>x.a;
	}
};
int main(){
	node x1={3,5},x2={5,3};
	cout<<(x1>x2);
	return 0;
}

如该代码的输出就是0

#include<iostream>
#include<cstdio>
using namespace std;
struct node{
	int a,b;
	bool operator>(const node& x){
		return b>x.b;
	}
};
int main(){
	node x1={3,5},x2={5,3};
	cout<<(x1>x2);
	return 0;
}

该代码的输出就是1
把它放进大根堆中就是这样:

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
struct node{
	int a,b,c;
	bool operator<(const node& x) const{
		return a<x.a;
	}
};
priority_queue<node,vector<node>,less<node> > q;//大根堆 
int main(){
	node x1={1,2,3};
	node x2={1,3,2};
	node x3={2,3,1};
	q.push(x1);
	q.push(x2);
	q.push(x3);
	while(!q.empty()){
		printf("%d %d %d\n",q.top().a,q.top().b,q.top().c);
		q.pop();
	}
	return 0;
}

输出结果就是预想的:

2 3 1
1 3 2
1 2 3

所以,我们就可以写各种奇奇怪怪的算法啦
完结撒花

这篇关于C++重载运算符的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!