gpt4 book ai didi

c++ - 问题在C++中打印对的优先级队列的所有值

转载 作者:行者123 更新时间:2023-12-02 10:06:44 28 4
gpt4 key购买 nike

这是打印优先级队列中第二对元素的功能:

void show(priority_queue <pair<int,string>> pq)
{
priority_queue <pair<int,string>> tmp=pq;
while (!tmp.empty())
{
cout<<tmp.top().second<<endl;
tmp.pop();
}
}

输入值为:
1 www.youtube.com 
2 www.google.com
3 www.google.com.hk
10 www.alibaba.com
5 www.taobao.com
10 www.bad.com
7 www.good.com
8 www.fudan.edu.cn
9 www.university.edu.cn
10 acm.university.edu.cn

我知道它应该按照第一个元素的降序排序,当两个元素相同时,它将保持我输入的第一个元素。

它应该先打印“www.alibaba.com”,然后再打印“www.bad.com”,然后再打印“acm.university.edu.cn”,因为所有的第一个值为10。

但是它先打印“www.bad.com”,然后打印“www.alibaba.com”,然后打印“acm.university.edu.cn”,依此类推。这是怎么了

最佳答案

std::pair comparison operators使用字法比较。

对于两对p1p2,这意味着如果p1.first == p2.first则比较p1.second < p2.second。因此,顺序将是从“最大”的second到“最小”的顺序(因为优先级队列的顺序相反)。

如果要进行自定义比较,则可以为队列提供一个自定义的“小于”功能。例如,一个不比较该对的second成员的那个(但随后我认为顺序将是不确定的)。

关于c++ - 问题在C++中打印对的优先级队列的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59872018/

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