Yak*_*kov 1 c++ sorting struct vector
我需要为矢量排序定义一个比较器函数:
class Sched
{
public:
struct Op
{
// some data
};
typedef std::pair<Op*,Clk> OpSchedule;
void genSched() { std::sort(m_mappedOp.begin(),m_mappedOp.end(),cmp)}
private:
std::vector<OpSchedule> m_mappedOp;
bool cmp(const OpSchedule& l,const OpSchedule& r)
{
return l.second< r.second;
}
Run Code Online (Sandbox Code Playgroud)
我收到编译错误:
function call missing argument list; use '&Sched::cmp' to create a pointer to member.
Run Code Online (Sandbox Code Playgroud)
有人可以建议如何解决这个错误的原因是什么?谢谢
cmp是非static会员职能.必须在某个对象上调用它.要获得指向该成员函数的指针,您需要按照错误所述进行操作&Sched::cmp,但是您需要将其绑定到类型Sched†的某个对象.
然而,没有任何理由cmp将非static所以才改成这样:
static bool cmp(const OpSchedule& l,const OpSchedule& r)
{
return l.second < r.second;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像现在一样传递它.
†你可以用std::bind(&Sched::cmp, this, std::placeholders::_1, std::placeholders::_2),绑定成员函数this.