我有一個問題來處理boost C++中的配對優先級隊列。我有一個項目數組{0,1,2,3,...},並且每個項目都有一個優先級值。這些優先級隊列構造另一個數組{項目0爲key0,項目1爲key1,...}。如何操作boost C++中的優先級隊列中的元素
在算法中,我需要選擇幾個項目將它們放入優先級隊列中。例如,我可以將項目1,2,3選擇到隊列中,並按其優先級值(鍵)排序。然後,我需要刪除一個特定的項目。例如,我可能想要從項目1,2,3的隊列中刪除項目2,項目2可能不具有最大/最小優先級值。
下面是我在boost中使用配對隊列創建的隊列。
#include "stdafx.h"
#include <iostream>
#include <boost/heap/pairing_heap.hpp>
pairing_heap<float> pq;
pq.push(1);
pq.push(2.5);
auto handle = pq.push(3.1);
pq.erase(handle); // remove an element by handle
cout << "pq top=" << pq.top() << endl; // a const_reference to the maximum element.
你可以看到,我只能推的優先級值到隊列中,如果我想刪除一個項目,我需要知道它的句柄值。但是,我不知道如何處理大量項目的值。希望有人知道如何去做。非常感謝!
也許問題是不夠清晰。在我的情況下,隊列中的每個項目都有兩個值,第一個值是int,比如1,2,3,而第二個值是優先級值(float)。我想用已知的第一個值(如(int)1)更新項目的優先級,但我不知道它當前的優先級值或隊列中的位置。總之,我需要通過它的第一個int值操作一個項目,而不是通過它的優先級值或隊列中的位置。非常感謝! –