优先级定义
Posted bigroc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优先级定义相关的知识,希望对你有一定的参考价值。
级别 | 说明 | 条件 |
---|---|---|
P0 | 最高的优先级,需要能够停下其他工作立马去完成的工作 | 需要非常谨慎地确定这个优先级,如非必要,尽量不使用,严格预防通货膨胀 |
P1 | 较高的优先级,优先完成 | 在必要时给定当前优先级 |
P1.5 | 正常的优先级 | 一般设定为P1.5 |
P2 | 较低的优先级,可以延期、拖后完成 | - |
P3 | 最低的优先级,不确定的事情,探索/尝试性的工作 | 对于不确定性非常强的工作,设定为P3的优先级 |
本文来自博客园,作者:bigroc,转载请注明原文链接:https://www.cnblogs.com/bigroc/p/17390642.html
博客园:https://www.cnblogs.com/bigroc使用自定义比较器函数在类中定义优先级队列
【中文标题】使用自定义比较器函数在类中定义优先级队列【英文标题】:Defining priority queue inside a class with a custom comparator function 【发布时间】:2016-09-30 17:33:54 【问题描述】:我正在尝试使用自定义比较器定义一个优先级队列,如下所示:
typedef bool (*comp)(int,int);
bool compare(int exp1,int exp2)
return (exp1 > exp2);
class test
public:
priority_queue<int,vector<int>,comp> test_pq(compare); // Gives compilation error
;
int main ()
priority_queue<int,vector<int>,comp> pq(compare); // Compiles perfectly
return 0;
这是出现的编译错误
test.cpp:18:47: error: ‘compare’ is not a type
priority_queue<int,vector<int>,comp> test_pq(compare);
^
我还尝试在测试类中声明另一个比较函数,但没有效果。为什么主函数中的优先级队列可以编译而类中的优先级队列没有?为比较器定义一个专用类是这里唯一的工作吗? 谢谢。
【问题讨论】:
【参考方案1】:test
类中的代码尝试声明一个签名不正确的方法 test_pq
。
要定义成员变量,您可以在初始化时使用花括号(需要 C++11):
class test
public:
priority_queue<int,vector<int>,comp> test_pqcompare;
;
要在 C++11 之前实现相同的功能,您需要为 test
类编写自定义构造函数:
class test
public:
test()
: test_pq(compare)
// Constructor code here
private:
priority_queue<int,vector<int>,comp> test_pq;
;
【讨论】:
感谢您的回复 :) 但是有没有办法让它不受版本限制地工作?通过将初始化转移到类构造函数来说? @ant_1618,是的,你当然可以这样做。我也更新了答案以包含此变体。但是,如果您已经知道initialization
和 constructor
的话,我希望您应该已经知道答案... =)
我不知道 cpp 在构造函数中使用 Test() : [initialisation list] \\ code
隐式初始化成员变量的方式。所以,我想不出这个答案 :P 现在很清楚了 :D 谢谢 :)以上是关于优先级定义的主要内容,如果未能解决你的问题,请参考以下文章