2

我正在使用Djikistra算法,它是我第一次實現它。 但我不知道如何用兩個參數聲明priority_queue。
對於1個參數(最小 - priority_queue)1可以很容易地做到:
std :: priority_queue接受2個參數(對於Djikistra算法)

priority_queue<int,std::vectors<int>,std::greater> > 
+0

你究竟想要什麼?你想要這些參數是什麼?也許這只是我,但我沒有絲毫的想法,你要求。 – us2012 2013-02-14 13:10:03

+0

@ us2012:就像我們有1個參數優先級隊列,說A,那麼我們可以像A.push(5)那樣推1個整數。 ,我想能夠處理2個值,如A.push(5,3);並根據第1位進行排序。 (這裏是5)。 – 2013-02-14 13:17:49

+1

啊!那麼,或者使用'std :: map'(也是排序的),或者將pair('std :: pair ')放入'priority_queue'中,然後寫一個比較器,根據它們的第一個元素。 – us2012 2013-02-14 13:19:47

回答

2

使用std ::對,其中第一個是距離和第二頂點是數。

typedef std::pair<int, int> pii; 
std::priority_queue<pii, std::vector<pii>, std::greater<pii> > dijkstra_queue; 
+0

+1:D 以及如何推送值,你可以舉例:) – 2013-02-14 13:48:58

+0

dijkstra_queue.push(),top()和pop()是你所需要的dijkstra。有關詳細信息,請參見http://www.cplusplus.com/reference/queue/priority_queue/ – 2013-02-14 14:07:50

+0

以及如何檢索元素?
djkistra_queue.top()。? – 2013-02-14 14:10:31

相關問題