首页 > 解决方案 > 这个 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);
}

标签: c++

解决方案


我想先typedefusing. 它会让事情更清楚一点:

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


推荐阅读