c++ - 更改优先级队列元素是否会导致重新排序队列?

标签 c++ stl queue priority-queue

我有一个priority_queue,我想修改其中的一些内容(优先级值),那这个queue会被resort吗?

这取决于它是否依赖于 push/pop(更有可能,因为你只需要“插入”,而不是整体),或者访问 top 或 pop 时。

我真的很想改变队列中的一些元素。类似的东西:

priority_queue<int> q;

int a=2,b=3,c=5;
int *ca=&a, *cb=&b, cc=&c;

q.push(a);
q.push(b);
q.push(c); //q is now {2,3,5}

*ca=4;

//what happens to q?
// 1) {3,4,5}
// 2) {4,2,5}
// 3) crash

最佳答案

priority_queue 复制您插入其中的值。您最后的分配对优先级队列的顺序以及存储在其中的值的影响为零。

关于c++ - 更改优先级队列元素是否会导致重新排序队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14016189/

相关文章:

php - PHP 中的优先级队列

c++ - 从键码中获取键名(X11 XGrabKey)

c++ - OpenCV 错误 : "LINK : fatal error LNK1104: cannot open file ' opencv_core231d. 库'”

c++ - 查找十六进制字符串是 utf-8 还是 utf-16

与 vector 相比,C++ STL 队列内存使用情况?

ios - UILabel 的文本在延迟后加载

c++ - 将参数传递给基类构造函数时成员的初始化

c++ - 在 LINUX 中的迭代器之前预期为 ';' (c++)

c++ - STL Containers - vector 、列表和双端队列之间的区别

Azure 服务总线队列 - 使用 BrokeredMessage 进行序列化