stl的sort能否使用类的成员函数作为判断条件?有示例..

来源:百度知道 编辑:UC知道 时间:2024/06/10 17:22:39
class Event{
bool priorto(Event *a,Event *b);
}
...
vector<Event*>events;
...
sort(events.begin(),events.end(),Event::priorto);
这段为什么不能编译通过 请问应该如何写
就是说sort的第三个参数 是不是非得是全局的函数??
为了较少耦合度啊 定义在外面能通过 就想问问放里面行不行

可以啊,Eventh中的prioto声明称static的
static bool priorto(Event *a,Event *b);

#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

class Event{
public:
static bool priorto(Event *a,Event *b) {
return true;
}

};

int main()
{
vector <Event*> events;

sort(events.begin(),events.end(),Event::priorto);
}

这最后一个参数没必要一定要定义在类里面吧,因为比较的两个参数是两个类对象或者你可以显示的声明为inline

第三个参数不是个谓词吗?

函数或者函数对象