PS:其实小小的说一下不就是浅论么= =
C++中,有一个非常有意思的东西就是struct,加上最近做了几个关于结构体的题,于是心血来潮讲一讲结构体吧。
结构体的基本格式:
struct node { 数据类型1 变量1; 数据类型2 变量2; 数据类型3 变量3; …… …… 数据类型n 变量n; }结构体名称;
结构体一般用于某些关联性很强却类型不同(或者条件不同)的数据中,例如:
struct xuesheng //学生 { int chengji; //成绩 string mingzi; //名字 int mingci; //名次 char chenghao; //称号 }a[11];
这样用起来我们就可以将学生所有信息归类,比如这样:
#include<iostream> #include<cstring> #include<cstdio> using namespace std; struct xuesheng { int chengji; string mingzi; int mingci; char chenghao; }a[11]; int main() { int i; for(i=1;i<=10;i++) { cin>>a[i].chenghao>>a[i].chengji; cin>>a[i].mingci>>a[i].mingzi; } for(i=1;i<=10;i++) { cout<<a[i].chenghao<<a[i].chengji; cout<<a[i].mingci<<a[i].mingzi; } return 0; }
当然,我们也可以通过结构体做其他操作,比如我们现在如果要将学生按成绩由大到小输出,就可以利用结构体+STL——sort函数(别打我,我懒得写排序)来实现。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; struct xuesheng { int chengji; string mingzi; int mingci; char chenghao; }a[11]; //int cmp(xuesheng s,xuesheng t); int main() { int i; for(i=1;i<=10;i++) { cin>>a[i].chenghao>>a[i].chengji; cin>>a[i].mingci>>a[i].mingzi; } sort(a+1,a+11,cmp); for(i=1;i<=10;i++) { cout<<a[i].chenghao<<a[i].chengji; cout<<a[i].mingci<<a[i].mingzi; } return 0; }
这里有一个cmp函数,和sort有很大的联系,实际上这是一个关于结构体排序的东西,他的用法如下:
int cmp(结构体变量1,结构体变量2) { return 变量1>变量2; } *********** *********** sort(a,a+n,cmp); //从大到小排列;
我们将成绩放入,就成了这样:
int cmp(xuesheng s,xuesheng t) //注意这里是struct的名称,不是结构体名称(有点乱) { return s.chengji>t.chengji; } sort(a,a+n,cmp); //从大到小排列;
这样子,我们就把学生按成绩从大到小排出来了,当然,其他的数据也会跟着变化。再输出的时候,所有信息就会按照成绩整齐的排列出来,还是非常方便的。
--------------------------------------------------分隔符--------------------------------------------------
结构体中其他操作还有很多,这里也说不完(毕竟浅论orz),剩下的东西还需要读者自己去琢磨。
//好不容易有了一个正常的博文,内心暗爽+1s;
时间: 2024-09-28 16:12:34