c ++ std ::使用函数返回值对std :: vector进行排序

时间:2012-08-23 02:02:10

标签: c++ sorting stl vector

我有一个Policy类,其功能如下:

double Policy::meanResponse();

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

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

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

但我收到错误:

  

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

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

1 个答案:

答案 0 :(得分:4)

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

double Policy::meanResponse()const;

由于您使用const引用将Policy对象传递给compare函数,因此无法在它们上调用非const方法。

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