简体   繁体   English

在C ++中使用vector实现简单的优先级队列

[英]Implementing simple priority queue using vector in C++

The following gives an error for the code mentioned below. 下面给出了下面提到的代码的错误。 Where I have gone wrong ? 我哪里出问题了?

error: ‘function’ is not a member of ‘std’

I want to make priority queue using C++ std lib queue, and min the queue is that IceCream which takes least time to prep. 我想使用C ++ std lib队列创建优先级队列,并且最小的队列是需要最少时间准备的IceCream。 I have tried implementing this -> declaring a priority_queue in c++ with a custom comparator 我试过实现此-> 使用自定义比较器在c ++中声明一个priority_queue

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <queue>
#include <deque>
#include <iterator>
#include <string>
#include <sstream>

using namespace std;


class IceCream
{
 public:
   int time_to_prep;
    IceCream(int flav) {
          time_to_prep = flav;
       }
};

bool Compare(IceCream a, IceCream b)
{
    return a.time_to_prep > b.time_to_prep;
}

int main()
{
    priority_queue<IceCream, vector<IceCream>, std::function<bool(IceCream a, IceCream b)> > my_pq(Compare);
    my_pq.push(IceCream(4));
    my_pq.push(IceCream(33));
    my_pq.push(IceCream(9));
    cout << my_pq.top() << endl;
    return 0;
}
#include <functional>

You need this include to get access to std::function 您需要此包含才能访问std::function

See: http://en.cppreference.com/w/cpp/utility/functional/function 请参阅: http : //en.cppreference.com/w/cpp/utility/functional/function

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM