如何在c ++

时间:2017-07-30 13:56:18

标签: c++ function parameter-passing priority-queue

我已声明一个优先级队列,顶部有最小元素,如下所示



priority_queue<int, vector<int> , greater<vector<int>> > low;
&#13;
&#13;
&#13;

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

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

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

在这两种方法中我都遇到了编译错误; 第二种方法很明显,因为类型不匹配而产生错误,但编译器不允许第一种方法。 请帮帮我。

1 个答案:

答案 0 :(得分:1)

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

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

conda create -n tensorflow python=3.6 
activate tensorflow
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.2.1-cp36-cp36m-win_amd64.whl 

应该是

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

注意第三个模板参数。

由于您有priority_queue<int, vector<int> , greater<int> > low; queue比较器必须确定int,而不是int。< / p>

以这种方式编译。 Here一个例子。