c++ - 这个 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);
}
解决方案
我想先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 具有相同的优先级怎么办?这类事情只能从文档中知道。
推荐阅读
- python - 如果没有引发异常,您如何以 Python 方式告诉程序始终执行某些操作
- gcloud - gcloud functions deploy 总是说:--region: NAME must be specified
- c++ - 在支持多种类型的宏中使用 printf
- c++ - Glade Gui 问题
- java - 如何检查 Enum 是否在 Java 中使用
- vue.js - 如何在 vue 中创建/更新羽毛笔印迹?
- java - 如何检查firebase数据库中2个随机键中的值?
- graphql - Gatsby 在获取 graphql 时在构建期间给出错误“错误:名称为“文件”的类型不存在”
- symfony - 如何使用 Symfony 4 从 Web URL 生成 pdf?
- rust - 不能使用 format_args!由于临时值在此语句的末尾被释放