我想使用对我的实例的引用作为排序函数的参数。
我有vector<CMail> log
, 在类里面 CMail
有我想要的比较功能。
还有一个要排序的log
所以我有:
bool sortFunction(CMail a, CMail b){
return (a.CompareByTimeStamp(b) < 0) ? true : false;
}
然后
sort(log.begin(), log.end(), sortFunction);
它工作正常。但是我可以像这样将函数的参数作为引用吗?
bool sortFunction(CMail &a, CMail &b){
...
}
当我这样做时,我的代码没有编译。
我该怎么做?
最佳答案
简而言之:const
性。
你需要:
bool sortFunction(const CMail& a, const CMail& b){
return (a.CompareByTimeStamp(b) < 0);
}
这也意味着您的 CompareByTimeStamp
签名必须是:
int CompareByTimeStamp(const Cmail& other) const; // (inside class Cmail {...};)
// ^ b is const ^ a is const
参见 here . 这是因为比较两个对象不应该改变它们。
关于c++ - std :sort with & parametr c++ 的排序函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16037969/