如何使用带有c优先级队列的2个以上参数的比较函数?
发布时间:2020-12-16 09:33:16 所属栏目:百科 来源:网络整理
导读:我有一个存储数据库记录的对象类.还有一个比较类可以接收其中两个记录,另外一个对象描述了如何进行排序.我需要使用这两个具有优先级队列的类来合并记录.据我所知,我只能给一个带有2个参数的比较函数到priority_queue.将这个3参数比较器与优先级队列一起使用
我有一个存储数据库记录的对象类.还有一个比较类可以接收其中两个记录,另外一个对象描述了如何进行排序.我需要使用这两个具有优先级队列的类来合并记录.据我所知,我只能给一个带有2个参数的比较函数到priority_queue.将这个3参数比较器与优先级队列一起使用的最佳方法是什么?
priority_queue <Record,vector<Record>,Comparison(RecordA,RecordB,SortOrderObject)> pq; 解决方法
使用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)作为比较器传递给队列的构造函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |