Использование Boost.Lambda и без специальной функции сортировки , прямо в вашем коде, где вам нужна сортировка:
Кратко
// sort with VARA_ID
sort(Vec.begin(), Vec.end(), bind(&MyClass::varA, _1)<bind(&MyClass::varA, _2));
// sort with VARB_ID
sort(Vec.begin(), Vec.end(), bind(&MyClass::varB, _1)<bind(&MyClass::varB, _2));
Полный пример
#include <iostream>
#include <vector>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
#include <algorithm>
using namespace boost::lambda;
class MyClass {
public:
int varA;
int varB;
};
enum SorterType {
VARA_ID,
VARB_ID
};
int main()
{
std::vector<MyClass*> Vec;
Vec.push_back(new MyClass());
Vec.push_back(new MyClass());
Vec.push_back(new MyClass());
Vec[0]->varA = 1; Vec[0]->varB = 8;
Vec[1]->varA = 2; Vec[1]->varB = 7;
Vec[2]->varA = 3; Vec[2]->varB = 6;
// sort with VARA_ID
std::sort(Vec.begin(), Vec.end(),
bind(&MyClass::varA, _1) < bind(&MyClass::varA, _2) );
// VARB_ID
std::sort(Vec.begin(), Vec.end(),
bind(&MyClass::varB, _1) < bind(&MyClass::varB, _2) );
return 0;
}