std的排序函数:Sort with ¶metr 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 ness。你需要:

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

。这都是因为比较两个对象不应该改变它们。

最新更新