c++结构体的一种简单实现

    科技2024-04-20  13


    c++结构体的实现

    近期本代码新手对算法产生了兴趣,在自学的过程中,发现了结构体实在是太好用了吧。于是想把结构体的使用方法记录在博客中,方便以后忘记的时候查询,以及可以为和我一样0基础的代码小白学习参考。

    结构体的实现

    由于我不太喜欢看繁杂冗长的定义,加上网络上关于结构体定义的帖子已经很多了。所以本博客就通过一道简单的算法题来讲解结构体的实现。

    题目来源于洛谷P1104 生日 题目描述 cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序。但cjf君最近作业很多,没有时间,所以请你帮她排序。

    输入格式 有2行, 第1行为OI组总人数nn; 第2行至第n+1行分别是每人的姓名s、出生年y、月m、日d。

    输出格式 有n行, 即n个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)

    输入输出样例 输入 #1 3 Yangchu 1992 4 23 Qiujingya 1993 10 13 Luowen 1991 8 1 输出 #1 Luowen Yangchu Qiujingya

    解题开始!!

    好,废话终于讲完了,接下来开始解题

    首先我们要定义一个结构体

    struct student{ int id; string name; int y; int m; int d; }a[105];

    在这段代码中,我们定义了一个名为student的结构体,并且定义了一个长度为105的a[105]结构体数组。

    bool cmp(student a,student b){ if(a.y < b.y)return true; else if(a.y == b.y){ if(a.m < b.m) return true; else if(a.m == b.m){ if(a.d < b.d) return true; else if(a.d == b.d) return a.id>b.id; } }return false; }

    然后就是这段快排代码,因为题目说要按生日来排序,所以我们直接可以用快排来做,但是由于快排函数默认是定义将一个数组进行排序,所以如果直接将结构体a放进快排函数中,编译会报错,所以我们定义一个函数cmp,用来告诉快排函数该怎么将我们定义的结构体进行排序。(关于快排函数的方法我以后在写一个贴子吧)

    ok,那我们这个代码的基本功能就都定义好了,接下来就是调用这两个代码块就可以完成这道简单的算法题了。ac代码呈上:

    #include<bits/stdc++.h> using namespace std; struct student{ int id; string name; int y; int m; int d; }a[105]; bool cmp(student a,student b){ if(a.y < b.y)return true; else if(a.y == b.y){ if(a.m < b.m) return true; else if(a.m == b.m){ if(a.d < b.d) return true; else if(a.d == b.d) return a.id>b.id; } }return false; } int main(){ int n; cin >> n; for(int i = 0; i < n; i++){ a[i].id = i; cin >> a[i].name >> a[i].y >> a[i].m >> a[i].d; } sort(a,a+n,cmp); for(int i = 0; i < n; i++){ cout << a[i].name << endl; } }

    emmm,那么以上就是关于结构体的一种简单的实现了,本蒟蒻的第一次正经写博客,markdown也看不懂,很多细节也没处理好,以后会努力学习,争取写出好看优质赏心悦目的博客。 希望本篇博客能够帮助到和我一样开始学习编程的小可爱们,如果博客质量太低,起不到作用,orz,那我下次努力QAQ…

    Processed: 0.021, SQL: 8