[英]Sort function for std:sort with & parametr c++
我想将对实例的引用用作排序函数的参数。
我有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
看这里 。 这是因为比较两个对象不应更改它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.