简单介绍结构体重载
来源:互联网 发布:观察者模式js 编辑:程序博客网 时间:2024/05/16 04:11
为什么是简单介绍呢…
因为我也不是特别懂
我所有的operator的知识都是从我的学长spark给我发的一段代码里头猜出来的
首先,简单的定义
结构体是使用struct定义的
例如
struct room{ int a,b,c,d[123];};
这样我们就有了room类型的数据结构
在该结构当中,含有三个变量a,b,c
使用room定义新的变量
room t;cout<<t.a<<endl;cout<<t.d[1];
此处的定义和int、long long之类的定义是一样的
同时,当我们想调用定义的t的a变量时,通过调用t.a即可
调用数组也是相同的用法,相当于就是在d前增加了一个前缀t.来区分其他room类型的数据当中的d数组
我们也可以定义room类型的数组
room t[100]cout<<t[1].d[1]
在这种程度上来讲,结构体仅仅是多了几个变量,同时也增加了几个后缀来调用这些变量
然后,定义操作
我们重新定义一下room类型的数据结构
这次我们将它定义得正式一点
我们希望room能够表示某个房间当中的人,空位,人数,以及输出它内部有哪些人,踢出第x个人,清空数据
struct room{ int people[500],seat,count; void out() { for(int i=0;i<=seat;i++) cout<<people[i]<<endl; } void clear() { memset(people,1,sizeof(people); count=0; } void kick(int x) { people[x]=0; count--; }}
这样定义,我们的目的就达到了比如,我们定义房间a当中有十个空位、三个人1,2,3那么
room a;a.seat=10;a.count=3;a.people[1]=1;a.people[2]=2;a.people[3]=3;
这样定义就完成了当我们想知道每个座位上的人,踢掉第2个,然后将这些人清空
a.out();a.kick(2);a.clear();
此处的使用与queue的push()、pop()的调用方式类似
以上内容均为瞎逼胡扯
下面讲最厉害的重载
operator
operator的作用就是重新定义某种运算符
比如,重新定义矩阵的加法
struct matrix{ int mat[20][20]; matrix()//初始化 { memset(mat,0,sizeof(mat)); } operator +(const int x)//把当前矩阵每个位子都加上数字x { matrix c=matrix(); for(int a=0;a<=19;a++) for(int b=0;b<=19;b++) c.mat[a][b]=mat[a][b]+x; return c; } operator +(const matrix&y)//把当前矩阵和y矩阵相加 { matrix c=matrix(); for(int a=0;a<=19;a++) for(int b=0;b<=19;b++) c.mat[a][b]=mat[a][b]+y.mat[a][b]; return c; }}
上述操作定义了martix类型与int和matrix相加的操作operator后的符号是重载(重新定义)的符号,此处为'+' 而符号后面的括号内的类型是相加的类型如 operator+(const int x) 定义的就是matrix+int的操作 const使x不可更改(虽然不知道有什么用,但是用它就是了)而 operator+(const matrix & y) 当中的&符号,我也不知道有啥用 但是好像操作的对象是同种类型,如matrix+matrix时就要用&而在操作时还要新声明一个maxtrix c=matrix()的目的是在计算三个matrix x,y,zx=y+z时,如果不定义c,那么y+z就会使得y的值被更改我们用c.mat[x][y]=mat[x][y]+y.mat[x][y]就可以避免原矩阵的数字被更改 而使用matrix()来初始化,纯粹是为了表示这个数据类型是有初始化的操作的 因为我们无法在定义mat的时候直接赋处置,所以我们可以使用matrix()来完成赋初值另外,在调用自身的mat时,是不需要加上前缀的但是调用加上的矩阵y的mat时,要加上前缀->y.mat
差不多就是这些了吧…有不懂的可以提问,虽然我也不清楚很具体的知识
但是还是可以一起找找答案
并且我知道这种博客写出来很多东西可能也只有我看得懂
所以看了之后有很多疑惑的地方很正常,提问就好了
阅读全文
1 0
- 简单介绍结构体重载
- 优先队列-结构体重载
- 暑期集训之结构体重载
- 结构体重点总结
- 结构体重载==运算符小例子
- 优先队列结构体重载的二级排序
- HDU 5437(结构体重载、STL的应用模拟题)
- 结构体重载运算符版高精度!
- lucene 目录结构简单介绍
- JAVAjdk目录结构简单介绍
- 硬盘结构的简单介绍
- JAVAjdk目录结构简单介绍
- JVM 简单入门 简单结构介绍
- 体重
- 参考小白书上用c++采用结构体重载的大数类模版
- upper_bound无法用在结构体重
- 简单的测试体重的小程序
- 实验二 Intent 简单标准体重计算器
- java截屏代码
- java webservice 开发方法(REST方式)---续(父类写法及使用)
- hibernate 老版本在存dateTime时,报value为空
- vim 字符编码设置 及 修改编码
- codeforces 467-C. George and Job(前缀和+dp)
- 简单介绍结构体重载
- Maven 国内镜像很慢解决的方法
- PCAP文件结构
- deep learning 学习资料
- spring DelegatingFilterProxy 过滤器 的原理及运用
- 把apk提交腾讯应用市场的时候审核失败—未通过原因:拉取应用审核信息失败
- 软件测试学习笔记(1):软件测试概要
- JavaScript之Array方法不完全总结
- 1174 区间中最大的数(线段树)