转载自: https://www.cnblogs.com/ssfzmfy/p/13175332.html
背景
C++中,结构体是无法进行==,>,<,>=,<=,!=操作的,如要使用这些操作符对结构体进行操作,则可以在结构体内部对这些运算符进行重载,将结构体的比较转化为结构体内部的数字或者字符的比较。
实际编程中,大部分时候操作对象是结构体数组,尤其是在使用STL容器的时候,如果我们可以往语句中传入结构体,一些事情将会变得很简单。因此掌握结构体运算符的重载是非常必要的。
重载的方式
一、在结构体内部的重载
重载运算符的格式如下:
bool operator 运算符 (const 结构体名称 b) const
{
return(什么时候这个运算符对结构体成立);
}
priority_queueq;//优先队列
二、结构体外的重载
priority_queue<tmp,vector,cmp>q;;//优先队列
补充:operator() 的使用
operator()是函数调用操作符!
STL中的各种functor就是重载它实现的.
举例1:
class test
{
void operator()(int x)
{
cout<<x<<endl;
}
}
int main()
{
test t;
t(10);
return 0;
}
举例2:
using namespace std;
class Function
{
public:
double operator()(double x)
{
return 2*x;
}
};
int main()
{
Function myFunc;
cout<<myFunc(1.0)<<endl;
system("pause");
}