[英]How do I pass member data from an array of a structure into a function?
編輯:這被標記為重復的問題,但鏈接的問題不是我要求的。 我知道如何將結構數組傳遞給函數。 我正在尋求有關如何將成員數據從該數組中的元素傳遞給函數的幫助。
我在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;
}
}
}
}
但是將成員數據作為爭論傳遞,即idNumber,以避免為每個成員變量編寫排序函數?
否您不能為排序編寫單個通用函數,您需要為每個字段設置比較函數,或者您需要通過再發送一個參數來跟蹤要排序的成員,並在內部排序中檢查哪個標記要比較的字段然后交換。
排序為每個字段使用比較函數的最佳方法。
bool compareCurrentGrade (const Student & a, const Student & b) {
return a.currentGrade < b.currentGrade;
}
然后使用#include <algorithm>
定義的sort函數
sort(studentarr, startoffset, endoffset, compareCurrentGrade);
了解有關排序的更多信息
如果您不想使用外部排序libray模塊,則必須為每個字段編寫排序函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.