如何在c++中的函数参数中声明优先级队列

How to declare priority queue in function parameter in c++

我已经声明了一个优先级队列,其中最小元素在顶部,如下所示

priority_queue<int, vector<int> , greater<vector<int>> > low;

现在我想将这个对象传递给某个函数,为此我需要在函数头中声明,我尝试了以下方式声明

int fun1(priority_queue<int, vector<int> , greater<vector<int>> > min_heap){
return 0;
}

int fun2(priority_queue<int> min_heap){
return 0;
}

在这两种方法中我都遇到了编译错误; 由于类型不匹配,第二种方法很明显会出错,但编译器不允许使用第一种方法。 请帮助我。

你应该 post 编译器错误,但即使没有它我也会尝试猜测你的问题。

你的声明很可能是错误的,即你的:

priority_queue<int, vector<int> , greater<vector<int>> > low;

应该改为:

priority_queue<int, vector<int> , greater<int> > low;

注意第三个模板参数。

因为你有 intqueue ,所以 比较器 必须定义在 int 而不是 std::vector<int>.

那样应该编译。 Here一个例子。