gpt4 book ai didi

c++ - 优先队列,重载少操作

转载 作者:行者123 更新时间:2023-11-30 02:04:05 25 4
gpt4 key购买 nike

我已经这样声明了 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_timem_dep_time > rhs.m_dep_time它奏效了。我能够按照预期获得最低的 dep_time。

我想在逻辑上使用 m_dep_time < rhs.m_dep_time是正确的而不是 m_dep_time > rhs.m_dep_time以递增顺序从队列中获取元素,首先是最小值。

你能解释一下我错过了什么吗?

最佳答案

看看这个 reference .默认情况下,顶部元素是最大的元素。如果你想要相反的行为,你必须使用不同的比较函数,就像你所做的那样。

关于c++ - 优先队列,重载少操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11056465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com