Jam*_*mes 3 c++ priority-queue
我有一个存储数据库记录的对象类.还有一个比较类可以接收其中两个记录,另外一个对象描述了如何进行排序.我需要使用这两个具有优先级队列的类来合并记录.据我所知,我只能给一个带有2个参数的比较函数到priority_queue.将这个3参数比较器与优先级队列一起使用的最佳方法是什么?
priority_queue <Record, vector<Record>, Comparison(RecordA, RecordB, SortOrderObject)> pq;
Run Code Online (Sandbox Code Playgroud)
使含有功能对象的额外信息,或者使用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);
}
};
Run Code Online (Sandbox Code Playgroud)
然后my_compare作为模板参数priority_queue传递给,并my_compare(sort_order)作为队列构造函数中的比较器传递.
| 归档时间: |
|
| 查看次数: |
1188 次 |
| 最近记录: |