DVG
DVG

Reputation: 13

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

I have declare a priority queue for with minimum element at the top as follows

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

Now I want to pass this object to some function, for this i need to declare in function header, I tried declaring following ways

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

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

in both approach i am getting compilation error; second approach is obvious to give error because of type mismatch but compiler does not allow to do first approach. Please help me.

Upvotes: 0

Views: 2347

Answers (1)

BiagioF
BiagioF

Reputation: 9735

You should post the compiler error, but I'm going to try to guess your problem even without it.

Your declaration is probably wrong, that is, your:

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

should be instead:

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

Note the third template parameter.

Since you have a queue of int the comparator has to be defined over, indeed, int and not on std::vector<int>.

In that way should compiler. Here an example.

Upvotes: 1

Related Questions