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

How to pass compare object or function to class function

本文关键字:类函数 函数 比较 对象      更新时间:2023-10-16

我将实现数据结构、段树、堆(优先级队列)。然而,我只想写一次,我可以将compare对象或compare函数传递到它中,这样我就可以将它设置为max-heap或min-heap(过去,我必须写两个类)。

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

这就是我想做的

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> >的比较对象设置为我的结构?

如果我想写我的比较对象或函数,我该怎么做。

抱歉我英语不好非常感谢。

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作为来自外部世界的成员函数中的参数。