如何将结构数组中的成员数据传递给函数?
问题描述:
编辑:这被标记为重复的问题,但问题链接不是我问的。我知道如何将一个结构数组传递给一个函数。我正在寻求如何将成员数据从该数组中的元素传递给函数的帮助。如何将结构数组中的成员数据传递给函数?
我有C++中的家庭作业,我的任务是用于跟踪学生的信息创建一个结构:
struct Student {
string name;
double idNumber;
double currentGrade;
double lastGrade;
double overallGPA;
};
提示用户输入的学生,他们将进入数据的数量为此根据此输入创建一个结构数组。程序然后循环遍历每个元素,提示用户输入每个结构实例的成员数据。
一旦输入了所有数据,我的任务就是根据用户选择的成员变量对数组进行排序。我已经写了排序函数用于通过名称变量进行排序,并且我已经编写了基于双变量对数组进行排序的通用函数,但是我不确定如何对所有四个双变量只使用一个函数。
本质上,有一种方法可以使用此功能:
void doubleSort(Student arr[], int arrSize) {
// bubble sort: high -> low
Student temp;
for(int i = 0; i < arrSize; i++) {
for(int j = 0; j < arrSize; j++) {
if(arr[j] < arr[i]) {
// swap values
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
但传递构件数据作为arguement,即IDNumber中,为了避免编写一个排序函数为每个单独的成员变量?
答
否您不能编写一个用于排序的通用函数,您需要为每个字段设置比较函数,或者您需要通过发送多一个参数来跟踪要排序的成员,并在排序后执行检查为哪个标签比较哪个字段然后交换。
对每个字段使用比较函数进行排序的最佳方法。
bool compareCurrentGrade (const Student & a, const Student & b) {
return a.currentGrade < b.currentGrade;
}
,然后使用#include <algorithm>
sort(studentarr, startoffset, endoffset, compareCurrentGrade);
定义的排序功能,更多地了解排序See
如果你不想使用外部排序libray模块,那么你就写 每场的排序功能。
这似乎不是重复的,但也许问题的措辞可能不同。我认为这里的OP想要根据函数中的参数访问结构的某些字段。数组传递已经解决了。 – MayeulC
请看https://stackoverflow.com/questions/14418595/c-method-for-iterating-through-a-structs-members-like-an-array – MayeulC
正确。我的措辞不是很好,但我试图访问排序功能中的结构域,我不知道如何去做。 – Austin