这个c ++结构如何工作,我该如何使用?

时间:2019-04-06 10:30:20

标签: c++

我必须为项目使用下一个接口,但是我不知道如何初始化PriorityQueue类的对象,甚至不知道如何使用Relation类型...有人可以向我解释一下吗? 谢谢!

typedef int TElem;
typedef int TPriority;

typedef std::pair<TElem, TPriority> Element;

typedef bool(*Relation)(TPriority , TPriority);

class PriorityQueue {
    PriorityQueue(Relation r);
}

1 个答案:

答案 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具有相同的优先级怎么办?这些事情只能从文档中得知。