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按字典序從小到大排序