2014-03-29 2 views
0

Я пытаюсь написать карту пар очередей приоритетов, если быть точным. Я действительно не уверен, как инициализировать и элемент, прежде чем добавить его на карту. Особенно, когда пара не существует, и я должен ее создать, а затем заполнить одну строку элементов одним элементом в правой очереди, а затем вставить всю пару в карту.Карта очередей приоритетов

typedef pair<priority_queue<myType>, priority_queue<myType>> Queue_Pair; 
typedef unordered_map<string, Queue_Pair> Map_of_Queues; 
Map_of_Queues myMap; 

Как мне вставить myType в очередь приоритета в пару на карту? Мне нужно будет сделать несколько проверок, прежде чем вставлять элемент в нужную очередь, чтобы это было действительно полезно знать.

Благодаря

ответ

1
// Get a reference to the Queue_Pair associated with "key" 
// If it doesn't yet exist, create it. 
Queue_Pair& qp = myMap["key"]; 

// add an element to the first priority queue 
qp.first.push(myType_object); 

// add an element to the second priority queue 
qp.second.push(another_myType_object); 

Обратите внимание, что вы можете просто сделать это:

myMap["key"].first.push(myType_object); 

Но если вы собираетесь повторно использовать связанные Queue_Pair несколько раз в последовательности, это будет нести стоимость поиска каждый время, поэтому лучше сначала сохранить его в ссылке, а затем использовать эту ссылку.

Смежные вопросы