c++ - std :sort with & parametr c++ 的排序函数

标签 c++ sorting

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

我有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/

相关文章:

c++ - int值前面多一个0是什么意思?

c++ - 为什么要初始化这个数据成员?

c++ - 我如何搜索对象指针列表? C++

c++ - 删除动态数组的正确方法是什么?

java - 从 ArrayList 中删除重复值

javascript - javascript中按每个第n个元素排序

java - 计算数组中间索引的差异?

c++ - "&SomeStruct::member"在 C++ 中是什么意思,其中 "SomeStruct"是一个结构, "member"是它的成员?

c++ - 合并 K 排序链表中的循环

java - 按值 Java 对 ObservableList 对象进行排序