C++ c++;使用函数返回值对std::vector排序

C++ c++;使用函数返回值对std::vector排序,c++,sorting,stl,vector,C++,Sorting,Stl,Vector,我有一个策略类,具有以下功能: double Policy::meanResponse(); 假设我有一个要排序的Policy对象(myPolicies)向量,我希望根据Policy::meansresponse()的值进行排序。我尝试了以下方法: bool compare_by_function(const Policy& p1, const Policy& p2) { return ( p1.meanResponse() < p2.meanResponse()

我有一个
策略
类,具有以下功能:

double Policy::meanResponse();
假设我有一个要排序的
Policy
对象(
myPolicies
)向量,我希望根据
Policy::meansresponse()
的值进行排序。我尝试了以下方法:

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

sort(myPolicies.begin(), myPolicies.end(), compare_by_function);
bool按函数比较(const Policy&p1、const Policy&p2)
{
返回(p1.meanResponse()
但我得到了一个错误:

“错误:将'const Policy'作为'double Policy::meansresponse()'的'this'参数传递将丢弃限定符”


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

您是否尝试将meanResponse更改为const

double Policy::meanResponse()const;
由于将策略对象传递给带有常量引用的compare函数,因此不能对其调用非常量方法


您是否尝试将meanResponse更改为const

double Policy::meanResponse()const;
由于将策略对象传递给带有常量引用的compare函数,因此不能对其调用非常量方法


还没有,我还没有。在函数的括号后添加
const
有什么效果?我以前从未这样做过。它将您的方法标记为常量,这意味着您没有在该方法中更改对象的状态。不,还没有。我没有。在函数的括号后添加
const
有什么效果?我以前从未这样做过。它将您的方法标记为常量,这意味着您没有在该方法中更改对象的状态。