c++ std::sort a std::vector 使用函数返回值

标签 c++ sorting stl vector

我有一个具有以下功能的 Policy 类:

double Policy::meanResponse();

假设我有一个要排序的 Policy 对象 vector (myPolicies),并且我希望根据 Policy::的值进行排序:平均响应()。我尝试了以下方法:

bool compare_by_function(const Policy& p1, const Policy& p2)
{
    return ( p1.meanResponse() < p2.meanResponse() );
}

sort(myPolicies.begin(), myPolicies.end(), compare_by_function);

但是我得到了错误:

"error: passing 'const Policy' as 'this' argument of 'double Policy::meanResponse()' discards qualifers"

谁能解释一下在这种情况下如何正确排序?

最佳答案

您是否尝试将 meanResponse 更改为 const?

double Policy::meanResponse()const;

由于您将 Policy 对象传递给带有 const 引用的比较函数,因此您不能对它们调用非常量方法。

http://www.parashift.com/c++-faq-lite/const-member-fns.html

关于c++ std::sort a std::vector 使用函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12083770/

相关文章:

c++ - 从 DLL(游戏 AI 库)调用成员函数

java - ArrayLinkedList 插入排序

c# - Sorted 为真时 SelectedValue 的问题(ComboBox)

linux - 根据前 n 列降序对行进行排序

c++ - 如何模拟不存在的 find_first_not_of 函数?

c++ - 标准容器封装和基于范围的 for 循环

c++ - 连接 QDomNode 和 QStandardItem

c++ - 如何在 C++ 中将 pvr 解压缩为原始格式 8888?

c++ - 为什么来自匿名对象的 std::pair 复制该对象而不是移动?

c++ std::map 分配错误:无法在分配中将 ' type **' 转换为 'type *'