【问题标题】:Passing in a Priority Queue by reference通过引用传入优先队列
【发布时间】:2015-05-14 07:40:35
【问题描述】:

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

在我的 main 我声明我的优先级队列如下: 类型是订单 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 函数?

【问题讨论】:

  • 请给我们一些代码。让讨论更轻松。
  • 您说“通过引用传入优先级队列”,然后很快谈到了指针。为什么不只是通过引用传递?然后是的,显示一些代码。

标签: c++ queue pass-by-reference priority-queue


【解决方案1】:

例子:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多