std的排序功能:用&排序parametr c ++

时间:2013-04-16 13:10:02

标签: c++ sorting

我想使用对我的实例的引用作为sort函数的参数。

我有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){
...
}

当我这样做时,我的代码没有编译。

我该怎么做?

1 个答案:

答案 0 :(得分:5)

简而言之: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。 这都是因为比较两个对象不应该改变它们。