c ++有序(稳定)优先级队列

c ++有序(稳定)优先级队列,第1张

c ++有序(稳定)优先级队列
  1. 您的比较器不正确。该文件的

    std::priority_queue
    规定,它应该提供一个严格的弱序(即,它应该
    event1->getTimestamp() > event2->getTimestamp()
    不是
    >=
    )。

  2. 为了使其稳定,您只需将行号存储在中,

    Event
    然后将其比较
    event1->getTimestamp() == event2->getTimestamp()

像这样:

struct EventComparator {  bool operator()(const Event* event1, const Event* event2) {    if (event1->getTimestamp() != event2->getTimestamp()) {      return event1->getTimestamp() > event2->getTimestamp();    }    return event1->getLineNumber() > event2->getLineNumber();  }   };


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5615423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存