以下內容是自己整理的根據結構體里面的不同變量,對list排序的實例,若有問題可以留言。僅供參考。
1 #include <iostream> 2 #include <list> 3 #include <algorithm> 4 5 using namespace std; 6 7 //聲明結構體 8 typedef struct testListSort 9 { 10 int number; 11 std::string name; 12 char time[10]; 13 int datalen; 14 }stuTest; 15 16 //結構體list 17 std::list<stuTest> listDataInfo; 18 19 //比較函數:根據結構體里面的整型number排序 20 bool sortStuInt(const stuTest& m1, const stuTest& m2) 22 { 23 24 return m1.number < m2.number; 25 } 26 27 //比較函數:根據結構體里面的字符串name排序 28 bool comStuString(const stuTest& m1, const stuTest& m2) 30 { 31 if(m1.name.compare(m2.name) <= 0) 32 { 33 return true; 34 } 35 else 36 { 37 return false; 38 } 39 } 40 41 int main(void) 42 { 43 //僅對結構體里面的 44 for (int i = 0; i < 10; i++) 45 { 46 //結構體整型賦值 47 stuTest temp; 48 temp.number = rand()%100; 49 50 //結構體字符串賦值 51 int num = rand()%100; 52 char strChar[10]; 53 itoa(num,strChar,10); 54 temp.name = strChar; 55 56 listDataInfo.push_back(temp); 57 } 58 59 //按照結構體里面的整型數據,對list里面結構體排序 60 listDataInfo.sort(sortStuInt); 61 62 //按照結構體里面的字符串數據,對list里面結構體排序 63 //listDataInfo.sort(comStuString); 64 65 return 0; 66 }
以上僅是對單個文件里面的list 按照結構體變量排序,如果在類的成員變量中,聲明上述比較函數sortStuInt、comStuString,並且在類的其他成員函數調用的話,可能會有問題,這時可以把比較函數放到類前聲明,在類的CPP中直接實現,再次在類的成員函數調用時就不會出錯,具體原因不在此列出,可以自行嘗試。以上內容純屬自我理解,有不准確的地方,請指出留言,相互學習。