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.博主在尝试写公众号推送,如果您有什么批评建议的的,欢迎留言。