我有我的结构:
struct S{
int a;
};
我上课了:
class Other{
//some fields
};
我需要写函子:
struct Comparator {
bool operator()(S& l, S& r) {
//some code, considered l,r and any object of class Other
}
};
在operator()中应该考虑其他类的任何对象。 如何将对象转换为仿函数? 我使用functor进行priority_queue。 类的对象其他不能是静态字段。
为此目的的另一种方式?
答案 0 :(得分:2)
让Comparator
存储Other
类型的对象(或引用,shared_ptr
或unique_ptr
,具体取决于所有权和有效性语义),并通过{{传递此内容1}}' s构造函数。
Comparator
像这样创建priority_queue
,假设您想使用struct Comparator {
Comparator(const Other& val) : mVal(val){}
bool operator()(S& l, S& r)
{
//Comparison code here uses l, r and mVal
}
private:
Other mVal;
};
作为基础容器:
vector<T>