c++ - 通过引用传入优先队列

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

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

在我的主要声明中,我声明了我的优先级队列,例如:
类型是订单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

关于c++ - 通过引用传入优先队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29004868/

相关文章:

c++ - std::queue 内存消耗导致内存泄漏 - C++?

python - Python中传统线程和asyncio线程如何通信?

python - 修改给定 "path"的嵌套字典中的元素

PHP在递归函数中通过引用传递不起作用

函数调用后不需要的额外传递引用参数的 C++ 模式?

c++ - 范围内的范围,做还是不做?

c++ - Code::Blocks:Code Blocks IDE 不从 .vcsproj 文件中读取反斜杠

c++ - std::queue front 会将前面的元素移出行外吗?

c++ - Ogre点场景保存

c++ - 错误 C2059 : syntax error : '.'