Создайте объект функции, содержащий дополнительную информацию, либо используя boost::bind
, std::bind
, либо вручную, затем передайте этот объект в очередь с приоритетами. Вот версия от руки:
class my_compare {
SortOrder so;
public:
my_compare(const SortOrder& so): so(so) {}
bool operator()(const Record& a, const Record& b) const {
return comparison(a, b, so);
}
};
Затем передайте my_compare
в качестве аргумента шаблона в priority_queue
и передайте my_compare(sort_order)
в качестве компаратора в конструкторе очереди.