c++ - 如何迭代priority_queue?

标签 c++ stl queue

我可以使用迭代器(如 vector)在 c++ 中遍历标准 priority_queue 或标准 queue 吗?我不想使用 pop 因为它会导致我的队列出队。

感谢您的帮助

最佳答案

priority_queue 不允许遍历所有成员,大概是因为它太容易使队列的优先级顺序无效(通过修改您遍历的元素)或者它可能是“不我的工作”的基本原理。

官方的解决方法是改用 vector 并使用 make_heappush_heap 自行管理优先级pop_heap。在@Richard 的回答中,另一种解决方法是使用从 priority_queue 派生的类并访问具有 protected 可见性的底层存储。

关于c++ - 如何迭代priority_queue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4484767/

相关文章:

c++ - 带有 vsprintf (C++) 的查询助手的 MySQL 动态字符串大小

c++ - 什么是基数*(*)()

computer-science - 队列的实际应用是什么?

C++ lambda 表达式 - 编译器如何解释它们?

c++ - 什么都没有 boost 功能实例

c++ - 保证全局变量的正确初始化顺序

c++ - 迭代 map 并调用删除其他元素的函数是 map

c++ - 在另一个窗口中运行 ncurses 程序时,有什么方法可以使用 cout 进行调试吗?

java - 使用链表实现队列,出现与我的 Node 类相关的错误

c++ - 二叉树的层序遍历