C++的结构体Struct可以容纳许多不同的数据值
举例:
struct PayRoll { int empNumber; string name; double hours,payRate,grossPay; };
它本质上是创建一个名为 PayRoll 的新数据类型,但我们还并没有使用它
而以下定义语句创建了 PayRoll 结构体的 3 个变量:
PayRoll deptHead, foreman, associate;
它们每一个都是 PayRoll 结构体的实例,可以被分配和拥有自己的内存,以保存其成员数据。请注意,尽管 3 个结构体变量具有不同的名称,但每个变量都包含具有相同名称的成员,如图所示
我们也可以用声明的结构体中的数据结构去定义一个数组,如:
struct PayRoll { int empNumber; string name; double hours,payRate,grossPay; }a[1000];
这样就声明了一个a数组,数组中的每个值都具有结构体中的数据类型结构,即我们可以访问 a[1].name 或 a[500].hours 等,但前提是你已经为他们赋过值。
但是简单定义的结构体不能排序,如果需要将结构体按照某种性质排序,则需要sort函数和手动定义的cmp比较函数,如:
struct PayRoll { int empNumber; string name; double hours,payRate,grossPay; }a[1000]; bool cmp(RayRoll a, RayRoll b) { return a.name < b.name; }
sort(a, a + 1000, cmp);
这样我们就定义了a数组的排序,即按照每个值的name按字典序从小到大排序