我已经像这样声明了 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
升序从队列中获取元素,最低值在前。
你能解释一下我错过了什么吗?