文章目录
1,简述
通常情况下,我们会创建一些简单的数据结构以应对日常的算法使用,为了方便运算符的使用,我们要进行运算符的相关学习,运算符存在 + , - , * , % , / 这些大类,我们在重构的时候一般也只重构这些运算符,为了方便运算而存在的,下面我们首先讲解一下结构体的定义,因为运算符的重构一般情况下是在结构体中存在的,下面我们来了解一下大概的实现流程。
2,结构体的定义
1,结构体的声明
结构体的声明是有固定的结构的,所在位置一般在主函数的外面
cpp
struct Point {
int x , y ;
// 下面的数据类型是定义的结构体的数据类型
};
// 当然也可以一开始的时候就进行初始化 如下 :
struct Point{
int x , y ;
}Node[N] ;
//数组甚至还可以是单个变量
2,结构体的申请
结构体的申请一般来说是比较简单的,和一般的数据结构一样,使用的是 "struct + 数据结构 + 变量名称" 的办法 。
cpp
struct Point Node ;
##### 3,运算符的重载
介绍完结构体之后我们应该再想一想,运算符怎么进行重构?分为几种方式呢 ?
大致上我们可以把他们分成两种情况 : 在结构题中进行重构,在结构体外进行重构。首先是在结构体中重构是我比较喜欢的一种重构方式,这样的数据结构被打包到一个结构体中是更加的稳定!!!(个人认为),下面我们来学习一下这种数据结构。
3.1 ,在结构体中重构
1. friend函数
使用 friend 函数 进行重构的规则如下 :
cpp
struct Point{
int x ,y ;
friend bool operator < (Point a , Point b){
/*
函数主体 :
if(x.a==y.a)return a.y < b.x ;
return a.x < b.x ;
*/
}
}
// 主要的分支 : friend 变量类型 operator (运算符) ( 重载结构 a , 重载结构 b ){}
2,自身重构
使用自身重构的表现就是把上面的朋友变量的第一个转化成为自身的变量名称 ;
主要的结构应该是 : 变量类型 operator 运算符 ( const Point & a ) const {
}
cpp
struct Point {
int x , y ;
bool operator < (const Point &a)const{
/*
下面的函数为实现的主体内容 ;
*/
}
}
3.2 在结构体外进行重构
只有一种办法,实际上我觉得就像简单的函数的设置一样,直接上代码
cpp
Point operator * (const Point &a , const Point &b ){}
这大概就是重载运算符的全部内容了,简单移动,下面我们使用这三种方法对一种数据结构进行重构总结一下,最后实现一个总程序代码供大家学习借鉴
cpp
#include <iostream>
using namespace std ;
struct Point{
int x , y ;
friend Point operator+ (Point a , Point b){
Point c ;
c.x=a.x+b.x;
c.y=a.y+b.y;
return c ;
}
Point operator- (const Point &a)const{
Point c ;
c.x=x-a.x;
c.y=y-a.y;
return c ;
}
};
Point operator * ( const Point &a , const Point &b ){
Point c ;
c.x=a.x*b.x;
c.y=a.y*b.y;
return c ;
}
int main () {
return 0 ;
}