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:   }