一旦将对象成员推入队列,如何编辑优先级队列中的对象成员

时间:2018-04-18 22:52:38

标签: c++ priority-queue

我还是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;
};

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

1 个答案:

答案 0 :(得分:0)

  

如何将优先级队列中的对象成员推送到队列

后进行编辑

您无法修改优先级队列中对象的非可变成员,因为top会返回一个const引用。

您可以做的是复制top,然后复制poppush修改后的副本。

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