2015-03-12 3 views
0

У меня есть вектор приоритетных очередей объектов с пользовательским компаратором в моем main.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?

+0

Покажите нам код, пожалуйста. Делайте обсуждения проще. – ReneS

+1

Вы сказали: «Прохождение в очереди приоритета по ссылке», а затем быстро поговорили о указателях. Почему бы просто не пройти по ссылке? И тогда да, покажите код. – Jagannath

ответ

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 
Смежные вопросы