2014-11-01 5 views
0

Я пытаюсь создать очередь минимального приоритета типа Job с использованием STL в C++. У меня есть следующий код:Минимальная очередь приоритетов с объектами

class Job 
{ 
public: 
    int IOtime; 
}; 

struct grThan 
{ 
    bool operator()(const Job& l, const Job& r) const 
    { 
     return l.IOtime > r.IOtime; 
    } 
}; 

Я объявляя очередь std::priority_queue<Job, vector<Job>, grThan> IO;

Я получаю следующее сообщение об ошибке:

bool std::operator <(const std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem *)' : could not deduce template argument for 'const std::basic_string<_Elem,_Traits,_Alloc> &' from 'const Job'

+1

Составитель хорошо MSVC2013. Вы скомпилировали gcc? С опцией C++ 11? – Christophe

+2

Где и как на картинке появляется 'std :: string'? Он отсутствует в коде, который вы указали, но сообщение об ошибке относится к нему. Я предлагаю вам опубликовать небольшой полный пример, который воспроизводит проблему. –

ответ

0
// stackoverflow_26691997.cpp (cX) 2015 [email protected] 
// http://stackoverflow.com/questions/26691997/ 

#include <queue> 
#include <vector> 

class Job { 
public: 
    int IOtime; 
}; 

struct grThan { 
    bool operator()(const Job& l, const Job& r) const { 
     return l.IOtime > r.IOtime; 
    } 
}; 

int main() { 
    std::priority_queue<Job, std::vector<Job>, grThan> IO; 
}