Ниже приведена ошибка для кода, указанного ниже. Где я пошла не так?Внедрение простой очереди приоритетов с использованием вектора в C++
error: ‘function’ is not a member of ‘std’
Я хочу, чтобы очереди приоритета с помощью C++ зЬй Lib очереди, и мин очередь в том, что IceCream, который занимает минимум времени, чтобы преп. Я попытался реализации этого ->declaring a priority_queue in c++ with a custom comparator
#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;
}
останавливается на последней строке .. ERROR «'ошибка: нет совпадений для 'operator <<' (типы операндов: 'std :: ostream {aka std :: basic_ostream}' и 'const value_type {aka const IceCream}') cout << my_pq.top() << endl; ' –
@MohitKumar Если вы имеете в виду, что в последней строке есть другая компиляция, это потому, что вы пытаетесь напечатать 'my_pq.top()', который возвращает экземпляр 'IceCream', который не может быть напечатан. Вам нужно сделать 'cout << my_pq.top(). Time_to_prep << endl' – sji
@MohitKumar Это другая проблема. –