更改优先级队列元素会导致求助队列吗?

noi*_*cat 7 c++ queue stl priority-queue

我有一个priority_queue,我想修改它的一些内容(优先级值),那么队列会被使用吗?

这取决于它是否按下推/弹(更可能,因为你只需要"插入",而不是整体),或访问顶部或弹出时.

我真的想改变队列中的一些元素.像这样的东西:

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
Run Code Online (Sandbox Code Playgroud)

Cor*_*son 5

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