我必须为项目使用下一个接口,但是我不知道如何初始化PriorityQueue类的对象,甚至不知道如何使用Relation类型...有人可以向我解释一下吗? 谢谢!
typedef int TElem;
typedef int TPriority;
typedef std::pair<TElem, TPriority> Element;
typedef bool(*Relation)(TPriority , TPriority);
class PriorityQueue {
PriorityQueue(Relation r);
}
答案 0 :(得分:1)
我想首先将typedef
转换为using
。它将使事情变得更加清晰:
using TElem = int;
using TPriority = int;
using Element = std::pair<TElem, TPriority>;
using Relation = bool(*)(TPriority , TPriority);
class PriorityQueue
{
public:
PriorityQueue(Relation r);
};
bool some_relation(TPriority, TPriority);
auto test()
{
auto pq = PriorityQueue(some_relation);
}
如您所见,Relation
只不过是指向具有两个int
参数并返回bool
的函数的指针的类型别名。
最有可能使用Relation
函数来确定两个priorities
中哪个较高。但是,需要对其进行记录。例如。如果第一个参数的优先级更高,或者第二个参数的优先级更高,则应返回true
?如果两个arg具有相同的优先级怎么办?这些事情只能从文档中得知。