1. bool operator < (S & b) { return ID < b.ID; }
struct S { std::string firstname; std::string secondname; int ID; bool operator < (S & b) { return ID < b.ID; } // 重新定义小于,因为默认的sort函数调用的操作符是<,所以我们只需要重载 < 就好了 }; int main(int argc, char* argv[]) { std::list<S> mylist; std::list<S>::iterator iter; S a; a.firstname ="dfadf"; a.ID = 5; mylist.push_back (a); a.firstname ="得到"; a.ID = 9; mylist.push_back (a); a.firstname ="xxx"; a.ID = 7; mylist.push_back (a); a.firstname ="gggg"; a.ID = 25; mylist.push_back (a); mylist.sort();
2.
#include "stdafx.h" #include <iostream> #include <list> using namespace std; class A{ public: A(int m):a(m){} bool operator <(const A& other) { <span style="font-size: 18px;"> return a < other.a;</span> } friend std::ostream& operator <<(std::ostream& out, const A& obj){ out<< obj.a<<endl; return out; } private: int a; }; int _tmain(int argc, _TCHAR* argv[]) { list<A> S; typedef list<A>::iterator it; S.push_back(A(3)); S.push_back(A(2)); S.push_back(A(5)); S.sort(); it it1 = S.begin(); it it2 = S.end(); while(it1 != it2) { cout<<*it1<<endl; it1++; } return 0; }
3.
33 // list_sort.cpp 34 // compile with: /EHsc 35 #include <list> 36 #include <iostream> 37 38 int main( ) 39 { 40 using namespace std; 41 list <int> c1; 42 list <int>::iterator c1_Iter; 43 44 c1.push_back( 20 ); 45 c1.push_back( 10 ); 46 c1.push_back( 30 ); 47 48 cout << "Before sorting: c1 ="; 49 for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ ) 50 cout << " " << *c1_Iter; 51 cout << endl; 52 53 c1.sort( ); 54 cout << "After sorting c1 ="; 55 for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ ) 56 cout << " " << *c1_Iter; 57 cout << endl; 58 59 c1.sort( greater<int>( ) ); 60 cout << "After sorting with 'greater than' operation, c1 ="; 61 for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ ) 62 cout << " " << *c1_Iter; 63 cout << endl; 64 }