首页 > 代码库 > c++ list sort

c++ list sort

  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.cpp34 // compile with: /EHsc35 #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 }

 

c++ list sort