如何在函子中为std :: priority_queue传递额外的对象?

时间:2015-04-30 11:57:14

标签: c++ priority-queue functor

我有我的结构:

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。 类的对象其他不能是静态字段。

为此目的的另一种方式?

1 个答案:

答案 0 :(得分:2)

Comparator存储Other类型的对象(或引用,shared_ptrunique_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>