结构体也是一种容器;
结构体的基础
结构体可以用来存储一些变量,与数组一样,但表达形式不同;
基础表达;
1.定义;
struct node (结构体名称){
int 变量;
};
node a[1000];
或;
struct node (结构体名称){
int 变量;
}a[1000];
2.输入:
cin>>a[i].n(变量名);
3.输出:
cout<<a[i],n;
4.排序:
sort(a,a+n,cmp);
bool cmp(node a,node b){
if(判断){
执行语句;
}
return a.n>b.n;
实战:
题目描述
一年四季,寒暑交替,楠枫总是会收集每一个季节的树叶,并把它们制作成标本收集起来。当然,楠枫的收集很讲究,一片树叶不仅要标注收集的日期、收集地点,还要给他们分类。可是分类是个很繁琐的工作,不仅要查阅大量相关资料,还要小心求证分类是否正确。因此,楠枫请求小伙伴们帮忙查阅资料给树叶分类,以减轻自己的工作量。最后,需要你整理一下他们的分类结果,按次序列出所有树叶标本的信息。
输入格式
第一行一个整数
𝑛
n ,表示树叶标本的个数。
下来
𝑛
n 行,每行三个数据,分别表示树叶编号、收集日期、收集地点。
接下来
𝑛
n 行,每行两个数据,分别表示树叶编号和该片树叶的分类。
保证树叶编号不会重复,且全部由
4
4 位数字表示。
输出格式
总共
𝑛
n 行,每行一个分类好的树叶标本信息,分别表示该片树叶的所属分类、收集日期、收集地点和树叶编号。
注意,树叶标本信息优先按分类的字典序从小往大列出,同分类下的按照收集日期从早到晚列出,若是收集日期仍相同,需按收集地点的字典序从小到大列出,若是仍相同,则按树叶编号从小往大列出。
样例
Input 1
7
2145 1998-07-29 muzzkg
3314 2022-04-20 wkjneg
4637 2000-08-14 oacbtz
6156 2007-01-22 elmtry
6496 1997-12-11 qodkrc
7610 1995-04-20 otlahk
9703 2004-07-01 dxzcss
3314 LUVJ
2145 SQPE
6156 SQPE
9703 FVJS
4637 LUVJ
7610 GVQP
6496 LUVJ
Output 1
FVJS 2004-07-01 dxzcss 9703
GVQP 1995-04-20 otlahk 7610
LUVJ 1997-12-11 qodkrc 6496
LUVJ 2000-08-14 oacbtz 4637
LUVJ 2022-04-20 wkjneg 3314
SQPE 1998-07-29 muzzkg 2145
SQPE 2007-01-22 elmtry 6156
数据范围
1≤𝑛≤1000
这是一道基础的结构体排序问题;
上code:
#include<bits/stdc++.h>
using namespace std;
int n;
struct fit{
int biand;
string fenj;
}a[1010];
struct fie{
string fen,place,riqi;
int bian;
}b[1010];
bool cmp(fie k,fie p){
if(k.fen!=p.fen){
return k.fen<p.fen;
}else{
if(k.riqi!=p.riqi){
return k.riqi<p.riqi;
}else{
if(k.place!=p.place){
return k.place<p.place;
}else{
if(k.bian!=p.bian){
return k.bian<p.bian;
}
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>b[i].bian>>b[i].riqi>>b[i].place;
}
for(int i=1;i<=n;i++){
cin>>a[i].biand>>a[i].fenj;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[j].biand==b[i].bian){
b[i].fen=a[j].fenj;
}
}
}
sort(b+1,b+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<b[i].fen<<" "<<b[i].riqi<<" "<<b[i].place<<" "<<b[i].bian<<endl;
}
return 0;
}
//3
//1324 1972-09-27 fdwkblw
//8477 1938-01-27 vhjbsiv
//2930 1839-02-23 KSDvbva
//8477 HGUYG
//2930 HUBFJ
//1324 KGNVH
//2
//2930 3293-01-04 hmbjhbgf
//7483 7364-05-06 dhdbcjdd
//7483 GSJDH
//2930 KASHS