使用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;
}
你爲什麼使用指針對象的向量? – 2010-01-28 17:31:07