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

标签 c++ declaration priority-queue

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

比如我有

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

我如何将它放在 if/else 中,这样如果一个 bool 值被标记,pq 将被设置为...

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

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

最佳答案

这无法完成,因为如果您提供不同的模板参数,则两个模板是不同的类型。我的建议是传递一个具有 bool 值的比较仿函数,该 bool 值由 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) {
    }
};

关于C++ 在 else/if 中声明一个优先级队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20061613/

相关文章:

编辑元素时Java优先队列重新排序

c - 简单赋值中的段错误

c++ - 在 Code::Blocks 中构建一个 wxWidgets 程序

c++ - 在 std::forward 它如何接受右值?

c++ - 调整 CDockablePane 大小时刷新 CTreeCtrl(双击标题)

c - 允许静态声明后跟非静态声明的基本原理,但反之则不然

c++ - 如何将构造函数/析构函数添加到未命名的类?

java - 我可以在 Java 中使用优先级队列而不实现比较器吗?

c++ - 为什么这会立即运行?

c++ - using 声明是否能够引用友元函数