C++结构体中的技巧,重载,创建等。

1.结构体运算符的重载(用于优先队列排序,矩阵运算等)。

struct node{
    int a,b;
    bool operator < (const node tmp) const{
        return tmp.a>a;
    }
};

  重载了"<"运算符,优先队列默认按照大的在前排列。这个意思就是进来一个结构体tmp,它的a元素大所以它就在前面。

  重载还可用于矩阵运算,如:

struct matrix{
    ll dx[maxn][maxn];
    matrix(){
        memset(dx,0,sizeof(dx));
    }
    matrix friend operator * (matrix n1,matrix n2){
        matrix n3;
        for(int i=0;i<=len;i++){
            for(int j=0;j<=len;j++){
                for(int k=0;k<=len;k++){
                    n3.dx[i][j]+=n1.dx[i][k]*n2.dx[k][j];
                    n3.dx[i][j]%=mod;
                }
            }
        }return n3;
    }
}

  重载了乘法,那么两个结构体的矩阵之间可以直接进行运算,并返回一个同类型的矩阵n3。

  其实也可以写一个矩阵乘法的函数,也很方便。

2.结构体的创建:

  小白时期我们创建结构体往往是这样的:

node tmp;
tmp.a=xx;
tmp.b=yy;

  但是其实可以这样:   

node{xx,yy};    //创建一个Node类型的数据,并按顺序进行赋值。

  更详细一点:

struct node{
    int a,b;
    node(){};    //默认构造函数
    node(int a,int b):a(a),b(b){}   //对应两个参数的构造函数
}

  记得曾经写链表自己一直在用Malloc函数,一堆参数的朝里面放,费时且费心,这个技巧更灵活。

3.博主在尝试写公众号推送,如果您有什么批评建议的的,欢迎留言。

 

 

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值