C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。
结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:
- Title :标题
- Author :作者
- Subject :类目
- Book ID :书的 ID
定义结构
为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:
struct type_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names;
type_name 是结构体类型的名称,member_type1 member_name1 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。在结构定义的末尾,最后一个分号之前,您可以指定一个或多个结构变量,这是可选的。下面是声明一个结构体类型 Books,变量为 book:
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
示例:对结构体数组排序。
按结构体中某个成员进行排序,下面代码以成员b1为升序的排序。
#include<iostream>
#include<algorithm>
using namespace std;
struct st
{
int a1;
int b1;
}arr[100];
bool cmp(const st &x, const st &y)
{
return x.b1<y.b1;//从小到大排<,若要从大到小排则>
}
int main()
{
int i;
for (i=0;i<3;i++)
cin>>arr[i].a1>>arr[i].b1;//对结构体进行输入
sort(arr,arr+3,cmp);
for (i=0;i<3;i++)
cout<<arr[i].a1<<" "<<arr[i].b1<<endl;
}