【发布时间】:2012-06-18 20:46:19
【问题描述】:
我已经像这样声明了 std::priority_queue。
priority_queue < Aircraft, vector<Aircraft>, less<Aircraft> > *q;
我像这样重载了less运算符。
bool Aircraft::operator<(const Aircraft &rhs) const
{
return (m_dep_time < rhs.m_dep_time);
}
我打印出优先级队列,并按降序获取元素(最大的 dep_time 首先)。我不得不将 m_dep_time < rhs.m_dep_time 更改为 m_dep_time > rhs.m_dep_time 并且它起作用了。我能够按预期获得最低的 dep_time。
我认为在逻辑上使用m_dep_time < rhs.m_dep_time而不是m_dep_time > rhs.m_dep_time从队列中按升序获取元素是正确的,最低值在前。
你能解释一下我缺少什么吗?
【问题讨论】:
标签: c++ operator-overloading priority-queue