C++ list結構體變量排序


以下內容是自己整理的根據結構體里面的不同變量,對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中直接實現,再次在類的成員函數調用時就不會出錯,具體原因不在此列出,可以自行嘗試。以上內容純屬自我理解,有不准確的地方,請指出留言,相互學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM