1: #include <list>
2: #include <string>
3: #include <functional>
4: #include <iostream>
5:
6: struct S {
7: std::string firstname;
8: std::string secondname;
9: int ID;
10: // 重新定義小於,因為預設的sort函式呼叫的操作符是<,所以我們只需要過載 < 就好了
11: bool operator < (S & b) {
12: return ID < b.ID;
13: }
14:
15: };
16: int main(int argc, char* argv[])
17: {
18: std::list<S> mylist;
19: std::list<S>::iterator iter;
20: S a;
21: a.firstname ="dfadf";
22: a.ID = 5;
23: mylist.push_back (a);
24: a.firstname ="得到";
25: a.ID = 9;
26: mylist.push_back (a);
27: a.firstname ="xxx";
28: a.ID = 7;
29: mylist.push_back (a);
30: a.firstname ="gggg";
31: a.ID = 25;
32: mylist.push_back (a);
33: mylist.sort();
34: // 現在預設的operator已經被我們過載了,就不用管,直接呼叫sort就好了
35: for (iter = mylist.begin(); iter != mylist.end();++iter)
36: {
37: std::cout <<static_cast<S>(*iter).ID << "\t";
38: }
39: std::cout <<std::endl;
40: return 0;
41: }