我的main.cpp中有一个带有自定义比较器的对象优先级队列。我有多个需要优先级队列的功能,应该修改优先级队列。通过引用传递优先级队列的正确方法是什么?它会使用指针吗?我对如何解决这个问题感到非常困惑。
在我的主要部分中,我声明了我的优先级队列:
类型是Order
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函数?
答案 0 :(得分:0)
示例:
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