查看: 1429| 回复: 4
跳转到指定楼层
上一主题 下一主题
收起左侧

[学C/C++] 求救:c++ priority queue give wrong order

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
就是最基本的使用,如下。但是排出来的,只有top的那个值是对的,别的顺序都是错的。怎么会这样?感觉不可能。撞鬼了?我用的visual studio 2017 community. 万分感谢!

vector nums = { 1, 8, 5, 6, 3, 4, 0, 9, 7, 2 };  std::priority_queue q;
for (int n : nums) {
    q.push(n);

}






上一篇:小白自学python疑问打卡帖
下一篇:有人碰到leetcode账号被盗吗
推荐
HHKK774 2019-4-21 06:10:42 | 只看该作者
全局:
楼主是不是对pq有什么误解,pq就是堆,堆只保证父节点一定比所有子节点大或者一定比所有子节点小,不保证有序。你pop出来的时候实际上内部是要经过logn的操作,而不是你想象的只用取出第一个值就行了
比如对于一个小顶堆:1,5,3,8,6。它是一个合法的小顶堆,但是它就不是有序的
回复

使用道具 举报

推荐
wisdompeak2 2019-4-21 04:05:27 | 只看该作者
全局:
如果你需要一个container,能能够实时排序,并且你能“透明”地看到内部的元素排序顺序,请用C++的set。
回复

使用道具 举报

🔗
 楼主| pengzhao0524 2019-4-13 20:40:05 | 只看该作者
全局:
我明白了,一个一个pop出来的时候是对的。所以只看最上面的那个就对了。谢谢!
回复

使用道具 举报

🔗
杨超越 2019-4-21 09:45:46 | 只看该作者
本楼:
全局:
........................................................................
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表