加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用带有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)作为比较器传递给队列的构造函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读