C ++在else / if中声明优先级队列?

时间:2013-11-19 01:46:47

标签: c++ declaration priority-queue

我有两个使用不同比较器的不同优先级队列。我想用一个布尔值的if / else来确定哪个p.q.将被设置为变量(例如,“pq”);

例如我有

priority_queue<test, vector<test>, CompareTest1> pq;

如何将其放在if / else中,如果布尔值被标记,则pq将被设置为...

priority_queue<test, vector<test>, CompareTest2> pq;

使用不同的比较器。感谢。

2 个答案:

答案 0 :(得分:2)

这是不可能的,因为如果给出不同的模板参数,则两个模板是不同的类型。我的建议是传递一个具有布尔值的比较函子,该布尔值由if语句中的任何内容确定。例如:

struct compare {
    bool b;   
    //set this instead of the if statement and allow the function to do something different
    operator () (const test & lhs, const test & rhs) {
    }
};

答案 1 :(得分:0)

优先级队列的结构不允许您查找的内容 - 元素根据其比较器在优先级队列中排序。使用不同的比较器创建优先级队列等同于创建全新的优先级队列。