2016-10-11 5 views
2

Ниже приведена ошибка для кода, указанного ниже. Где я пошла не так?Внедрение простой очереди приоритетов с использованием вектора в 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; 
} 

ответ

6
#include <functional> 

Вам это нужно включать, чтобы получить доступ к std::function

См: http://en.cppreference.com/w/cpp/utility/functional/function

+0

останавливается на последней строке .. ERROR «'ошибка: нет совпадений для 'operator <<' (типы операндов: 'std :: ostream {aka std :: basic_ostream }' и 'const value_type {aka const IceCream}') cout << my_pq.top() << endl; ' –

+1

@MohitKumar Если вы имеете в виду, что в последней строке есть другая компиляция, это потому, что вы пытаетесь напечатать 'my_pq.top()', который возвращает экземпляр 'IceCream', который не может быть напечатан. Вам нужно сделать 'cout << my_pq.top(). Time_to_prep << endl' – sji

+0

@MohitKumar Это другая проблема. –

 Смежные вопросы

  • Нет связанных вопросов^_^