我有一个有函数的类
MyClass::doStuff(std::vector<MyCustomData*> toSort) { ...
我称之为
std::sort(toSort.begin(), toSort.end(), MyClass::SortByZ());
myClass::SortByZ() 是一个自定义比较器。现在这可行,但我想实现以下目标:
我有几个类,每个类都应该有自己的比较器函子来对“MyCustomData”进行排序。所以例如 Class1... 应该有
class Class1 {
struct SortData {
bool operator ()(MyCustomData *lhs, MyCustomData *rhs) {
return lhs->something1 > rhs->something1;
}
};
//...many more functions/vars
}
而 Class2 对于相同的数据类型有不同的比较器函子,例如
class Class2 {
struct SortData {
bool operator ()(MyCustomData *lhs, MyCustomData *rhs) {
return lhs->something2 > rhs->something2;
}
};
//...many more functions/vars
}
现在我希望能够调用函数 MyClass::doStuff(...)
doStuff(myData, Class1::SortData)
或者
doStuff(myData, Class2::SortData)
并且函数 MyClass::doStuff(...) 应该使用各自的排序顺序。
我没有找到这样做的方法,有吗?我想要一个简单的解决方案(不必支持模板或任何东西)。如果需要,我愿意使用 boost,但首选没有 boost 的解决方案。
我希望我能够描述我想要实现的目标?谢谢你的帮助!