通过引用传入优先级队列

Passing in a Priority Queue by reference

本文关键字:优先级 队列 引用      更新时间:2023-10-16

我有一个对象的优先级队列向量,在我的主.cpp中有一个自定义比较器。我有多个函数需要优先级队列,并且应该修改优先级队列。通过引用传入优先级队列的正确方法是什么?会不会使用指针?我对如何做到这一点感到非常困惑。

在我的主要情况下,我声明我的优先级队列如下:类型是 订单 vector<priority_queue<Order, vector<Order>, compLower> > buy_orders (num_equities);

我调用一个函数makeTransaction,它只处理单个优先级队列:

makeTransaction(equity_id, buy_orders[equity_id]);

但是,当我调用此函数并稍后尝试访问buy_orders时,没有任何变化。如何通过引用传递它,以便makeTransaction可以对buy_orders进行必要的更改?

另外,我将如何适当地声明 makeTransaction 函数?

示例:

void my_function(std::priority_queue<MyObject>& q)
{
  while(q.size() >= 10)
  {
    MyObject& o = q.top();
    // Do something with o
    q.pop();
  }
}
// Call the function :
std::priority_queue<MyObject> my_queue;
// fill the queue
my_function(my_queue); // Here, my_queue will be modified