我可以使用迭代器(如 vector
)在 c++ 中遍历标准 priority_queue
或标准 queue
吗?我不想使用 pop 因为它会导致我的队列出队。
感谢您的帮助
最佳答案
priority_queue
不允许遍历所有成员,大概是因为它太容易使队列的优先级顺序无效(通过修改您遍历的元素)或者它可能是“不我的工作”的基本原理。
官方的解决方法是改用 vector
并使用 make_heap
、push_heap
和 自行管理优先级pop_heap
。在@Richard 的回答中,另一种解决方法是使用从 priority_queue
派生的类并访问具有 protected
可见性的底层存储。
关于c++ - 如何迭代priority_queue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4484767/