Я пытаюсь использовать приоритетную очередь для хранения настраиваемого возражения со следующими переменными-членами:
class Jobs{
string id;
string location;
int start;
int end;
};
Я буду читать из файла хэш-карту идентификатора работы и веса работы. В конечном итоге у меня будет
unordered_map<string, int> jobWeight;
хранит эту информацию. Я хочу в конечном итоге поместить список заданий в priority_queue с приоритетом, основанным на хэш-карте jobWeight. Работа с наивысшим весом должна быть на первом месте.
Обращаясь к другим руководствам, я заметил, что вы должны создать отдельный класс / структуру и реализовать оператор (). Затем вы должны передать этот класс сравнения в параметры priority_queue. Однако похоже, что priority_queue создает новый экземпляр этого класса компаратора с параметрами по умолчанию? Как я могу ссылаться на свою хэш-карту jobWeight из этого класса компаратора?
class CompareJobs{
map<string, int> jobWeight;
public:
CompareJobs(map<string, int> &jobWeight){
jobWeight = jobWeight;
}
bool operator () (const Jobs &a, const Jobs &b){
return jobWeight.find(a)->second < jobWeight.find(b)->second;
}
};
jobWeight
былunordered_map
. Вы хотите преобразовать его вmap
и передать в качестве аргумента вашему компаратору или как? - person WhiZTiM   schedule 19.09.2016