C++中在使用自定义类型(结构体类型)的stl数据结构时,operate的用法

  operate的官方解释是“重载”,其实我觉得叫“扩展”更好一些,他的功能(在本文中)基本就是扩展运算符的功能,比如比较两个自定义类型的变量 Gate cmy 和 Gate zyq这两个自定义变量

  

#include<cstdio>
#include<set>
#include<iostream>
using namespace std;
struct Gate
{
    int id;
    int error_id;
};

bool operator<(const Gate cmy, const Gate zyq)
{
    if(cmy.id == zyq.id)
    {
        if(cmy.error_id < zyq.error_id)
            return true;
        else return false;
    }
    else if(cmy.id < zyq.id)
        return true;
    return false;
}
int main()
{
    set<Gate> rs;
    Gate cmy,zyq;
    cmy.id = 1;
    cmy.error_id = 1;
    zyq.id = 1;
    zyq.error_id = 1;
    rs.insert(cmy);
    rs.insert(zyq);
    cout<<rs.size()<<endl;
    return 0;
}

  上述程序的结果是1,也就是说重载成功了

  重载在这里提出一个板子用法,也是在算法中用的比较多一个用法

  bool operate<(const struct type value1,const struct type value2)/

{

  //programming under

}

你可以把这个operate看成一个自定义函数,因为我们可以看到,这个东西有返回值的,而且是有形参的,operate后面跟着的是你重载的符号,直接挨着写就好了。

我理解的意思就是:当使用重载的逻辑运算符时,且逻辑运算符比较的两个数是形参的类型时,自动调用这个函数,并且执行函数体部分,最后根据返回值类型,返回结果

我理解的意思应该就是很通俗易懂的了,也是很简单的一种用法,至于别的用法,我就想拿着来写算法,不需要的我不想浪费时间,C++的前景也不是很好,也可以说没什么前景,所以就说到这里

发布了35 篇原创文章 · 获赞 0 · 访问量 930

猜你喜欢

转载自blog.csdn.net/ACM_Cmy/article/details/103929844