这个 c++ 结构是如何工作的,我如何使用它

How does this c++ structure work and how can i use it?

本文关键字:何使用 工作 结构 c++ 何工作 这个      更新时间:2023-10-16

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

typedef int TElem;
typedef int TPriority;
typedef std::pair<TElem, TPriority> Element;
typedef bool(*Relation)(TPriority , TPriority);
class PriorityQueue {
    PriorityQueue(Relation r);
}

我想首先用using转换typedef。这将使事情更加清晰:

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?如果两个参数具有相同的优先级怎么办?这些事情只能从文档中知道。