【c/c++】STL中 结构体的运算符重载

本文介绍了C++中如何对结构体进行运算符重载,包括==、>、<等比较运算符,使得结构体能够直接用于比较操作。文章通过实例详细解释了在结构体内及结构体外重载运算符的方法,并展示了如何利用这些重载的运算符简化编程任务。

转载自: 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");
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值