如何将比较对象或函数传递给类函数

时间:2014-10-24 05:55:01

标签: c++ class object struct compare

我将实现数据结构,段树,堆(优先级队列)。 但是,我只想写它一次,我可以传递比较对象或比较函数,所以我可以将它设置为max-heap或min-heap(过去,我必须编写2个类)。

问题是如何将比较对象或比较函数传递给类函数

这就是我想做的事情

struct heap{
SomeType comp;

  void init(SomeType f){
     comp = f;
  }
...
}

当我想比较时,我会使用

comp(A, B); // << want it to return as bool

如何将greater<int>less<pair<int, int> >等比较对象设置为我的结构?

如果我想编写比较对象或函数,我该怎么办呢。

抱歉我的英语不好 谢谢。

1 个答案:

答案 0 :(得分:1)

heap为模板,如下所示:

template<typename SomeType, typename Compartor = std::less<SomeType> >
struct heap
{
   // ....
};

然后就可以了:

heap<int, std::greater<int> > h;

否则你可以拥有std::function<bool(heap const& lhs , heap const& rhs )> func ;heap内,并接受func作为来自外部世界的成员函数的参数。