栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++结构体和sort超详细用法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++结构体和sort超详细用法

        在c++中,随着程序需处理的问题复杂化,已有的数据类型(int,char,double,float,short等)显得不满足使用要求。因此,c++允许用户根据需要自己声明一些类型。其实,数组就是用户自己声明的类型 。

        除了数组以外,用户还可以声明结构体类型,共用体类型,枚举类型,类类型等,这些都称为自定义类型。

一、结构体 (1)结构体的定义

声明一个结构体的一般形式:

struct 结构体类型名{

    成员列表

};//别忘了分号

说明:

1.struct是声明结构体时必须用的关键字,向编译器表示这是一个结构体类型。

2.结构体类型名用来作为结构体类型的标志。

3.大括号中是该结构体的成员,由他们组成一个特定的结构体。

【示例】声明一个学生类型的结构体:

//一般在所有函数之前
struct student{
    string name;
    char xingbie;
    int number,age;
    double score
};
(2)定义结构体变量

结构体仅仅声明了一种类型,它只相当于一个模型,但没有数据,系统也不分配内存给结构体。为了能使用结构体类型中的数据,应定义结构体变量,并存放具体数据。

定义方式如下:

//一般在所有函数之前
struct student{
    string name;
    char xingbie;
    int number,age;
    double score
};
//上面已经有了一个结构体类型student,可以用它来定义变量
int main(){
    struct student a,b;


}
二、结构体与sort

c++中可以使用sort()函数进行排序,用法如下:

需要包含对应的头文件:#include(用万能头 bits/stdc++.h的当我没说)

例如:将a[0]~a[n-1]按照从小到大排序

sort(a,a+n);

将a[1]~a[n]按照从大到小排序

//比较方式
bool cmp(int a,int b){
  return (a>b)?1:0;//a>b时返回true,否则返回false  
}
.....
sort(a+1,a+n+1,cmp);

当然,我们也可以将sort配合结构体使用

举个例子,编程里有一道题,精挑细选(不知道大家听没听过)由于是多关键字排序,所以需要按自己的想法编写cmp规则

int cmp(struct guan a,struct guan b){
	if(a.len>b.len)
		return 1;
	else if(a.len == b.len && a.areab.num)
		return 1;
	else
		return 0;
}

cmp规则可以参考这种写法,也可以参考下面一种写法

int cmp(guan x,guan y){
	if(x.len != y.len) return x.len>y.len;
	if(x.area!= y.area) return x.area>y.area;
	if(x.num != y.num) return x.num>y.num;	
}

   这种写法看起来更简洁一些

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号