我将实现数据结构,段树,堆(优先级队列)。 但是,我只想写它一次,我可以传递比较对象或比较函数,所以我可以将它设置为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> >
等比较对象设置为我的结构?
如果我想编写比较对象或函数,我该怎么办呢。
抱歉我的英语不好 谢谢。
答案 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
作为来自外部世界的成员函数的参数。