我已經通過了C++參考手冊,並且仍然不清楚如何在STL中使用priorityqueue數據結構。優先級隊列和Prim的算法
所以,基本上我一直在嘗試使用堆來實現我自己。
我這樣做是爲了實現Prim的算法。
Vector <int, int> pq;
這是我的優先級隊列。第一個字段是節點,第二個字段是現有樹的權重。
我計劃通過更新其鄰居節點的權重,每次將新節點添加到樹中時修改pq中權重的值。
- 如何訪問此矢量的各個元素?我也需要能夠隨意刪除元素。
這是實現優先級隊列的好方法嗎?如果我想另一個字段添加到容器是什麼,即
Vector<int, int, int> MST
- 我怎麼會進入第三個元素?我想以這種方式存儲生成的MST,使得前兩個字段表示形成邊緣的頂點,以及第三個權重。
如果有人能告訴我如何使用push_back將元素分配給這個向量,它也會有所幫助。
此外,傳統的C++ STL優先級隊列是否會對此有所幫助,因爲每次將新元素添加到MST時都需要更新優先級值?當值被修改時,它會根據優先級自行糾正自己嗎?
另一個問題,這些向量,當我將它們傳遞給一個函數,並嘗試進行更改時,它是通過值傳遞還是通過引用傳遞 - 或者,這些更改是否反映在函數之外?
你是指古代的和過時的ARM以」 C++參考手冊「? – PlasmaHH
如果你的'std :: vector'是'Vector',STL向量只能有一個元素類型的模板參數(事實上它也有分配器模板參數)。您可以使用'std :: vector>'來代替您的目的。 http://www.cplusplus.com/reference/vector/vector/ –
vard
@PlasmaHH:我其實是指cplusplus.com網站作爲參考。我認爲這是合法:) – Floose