【发布时间】:2021-08-17 20:23:10
【问题描述】:
假设我有一个自定义结构
struct custom
{
int quantity;
double price;
}
以及自定义对象的优先级队列:
std::priority_queue<custom, std::vector<custom>, some_custom_comparer_t> pq{...}
some_custom_comparer_t 只会根据价格而非数量对custom 进行排序。有什么办法可以让我更改custom 顶部priority queue 对象的quantity?
我知道我无法更改价格,因为 STL 容器不允许调整优先级队列的键,但在这种情况下,我希望代码能够识别 quantity 变量不是密钥,请允许我修改它。
到目前为止,我的解决方案是把它弹出,调整数量,然后把它推回去。
【问题讨论】:
-
你熟悉
mutable吗? -
@DrewDormann 我想是的。它只允许声明为常量的成员函数修改声明为可变的变量吗?或者在这种情况下它还有其他作用吗?
标签: c++ priority-queue