在优先级队列被推送到队列后,如何编辑对象成员

How can I edit object members in a priority queue once it has been pushed onto the queue

本文关键字:队列 编辑 何编辑 成员 对象 优先级      更新时间:2023-10-16

我还是C++新手。一旦我已经将结构 A 推送到优先级队列中,我想修改变量"change"。这能做到吗?这是我尝试过的

pq.top().change = 200; //But it says this is only readable

这是我所拥有的:

priority_queue<A, vector<A>, comparator> pq;
struct A{
    vector<B> list;
    int change = 0;
};

任何指导都会有所帮助。谢谢。

将优先级队列中的对象成员

推送到队列后,如何编辑该对象成员

不能修改优先级队列中对象的不可变成员,因为top返回 const 引用。

您可以做的是 制作top的副本,然后pop它,并push修改后的副本。

或者,您可以使用可变成员,但如果这样做,请记住Compare不得使用该成员。