如何在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;
注意第三个模板参数。
因为你有 int
的 queue
,所以 比较器 必须定义在 int
而不是 std::vector<int>
.
那样应该编译。
Here一个例子。
我已经声明了一个优先级队列,其中最小元素在顶部,如下所示
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;
注意第三个模板参数。
因为你有 int
的 queue
,所以 比较器 必须定义在 int
而不是 std::vector<int>
.
那样应该编译。 Here一个例子。