#include #include #include #include #include using namespace boost::lambda ; using namespace std ; struct X { private: int a ; public: X () {} int get_a() { return a ; } void set_a (int var) { a = var ;} } ; struct Y { int a ; } ; int main (void) { vector vx ; vector vy ; X varx1; varx1.set_a(5) ; vx.push_back (varx1) ; X varx2; varx2.set_a(8) ; vx.push_back (varx2) ; X varx3; varx3.set_a(7) ; vx.push_back (varx3) ; X varx4; varx4.set_a(4) ; vx.push_back (varx4) ; X varx5; varx5.set_a(9) ; vx.push_back (varx5) ; X varx6; varx6.set_a(2) ; vx.push_back (varx6) ; X varx7; varx7.set_a(6) ; vx.push_back (varx7) ; Y vary1; vary1.a = 5 ; vy.push_back (vary1) ; Y vary2; vary2.a = 8 ; vy.push_back (vary2) ; Y vary3; vary3.a = 7 ; vy.push_back (vary3) ; Y vary4; vary4.a = 4 ; vy.push_back (vary4) ; Y vary5; vary5.a = 9 ; vy.push_back (vary5) ; Y vary6; vary6.a = 2 ; vy.push_back (vary6) ; Y vary7; vary7.a = 6 ; vy.push_back (vary7) ; cout << "BEFORE SORT" << '\t' ; for_each (vy.begin(), vy.end(), cout << bind (&Y::a, _1) << '\t') ; cout << endl ; stable_sort (vy.begin(), vy.end(), bind (less(), bind (&Y::a, _1), bind (&Y::a, _2))) ; cout << "AFTER SORT" << '\t' ; for_each (vy.begin(), vy.end(), cout << bind (&Y::a, _1) << '\t') ; cout << endl ; #if 0 cout << "BEFORE SORT" << '\t' ; for_each (vx.begin(), vx.end(), cout << bind (&X::get_a, _1) << '\t') ; cout << endl ; stable_sort (vx.begin(), vx.end(), bind (less(), bind (&X::get_a, _1), bind (&X::get_a, _2))) ; cout << "AFTER SORT" << '\t' ; for_each (vx.begin(), vx.end(), cout << bind (&X::get_a, _1) << '\t') ; cout << endl ; #endif return 0 ; }