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

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

本文关键字:参数 声明 优先级 队列 函数 c++      更新时间:2023-10-16

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

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;
}

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

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

您的声明可能是错误的,即您的:

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

应该改为

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

请注意第三个模板参数。

由于您有intqueue,因此必须确实int而不是std::vector<int>上定义比较器。

以这种方式应该编译器。 这里有一个例子。