這周四導師的演算法課就要考試,真心感覺自己沒學好,在看貪心策略的時候提到了哈夫曼編碼,而哈夫曼編碼是借助優先佇列實現的。對於優先佇列並不熟悉的我,理所當然的應該回顧複習乙個priority_queue,也就是優先佇列!下面主要是根據《c++標準程式庫》中的內容整理而得到。
class priority_queue<>實做出乙個queue,其中的元素根據優先被讀取,它的介面與queues非常接近。也就是說,push()對著queue置入乙個元素,top()/pop()訪問/移除下乙個元素。然而這裡的「下乙個元素」並非第乙個被置入的元素,而是「優先順序最高」的元素。換句話說,在priority_queue中的元素已根據其值進行了排序。和往常一樣,你可以透過template引數指定乙個排序準則,預設的排序準則是利用operator《形成降序排列,那麼所謂「下乙個元素」「就是」數值最大的元素「。如果同時存在若干個數值最大的元素,則無法確定究竟哪乙個會入選。
priority_queue和一般的queue都定義於標頭檔案中:
#include
在標頭檔案中,class priority_queue定義如下:
namespace std
cout << endl;
return 0;
}程式輸出結果如下: 66.6 44.4 33.3 22.2 11.1
由上可見,在元素66.6,22.2,44.4被置入後,程式列印出優先順序最高的元素66.6和44.4。另外三個元素被置入後,priority_queue內含22.2,11.1,55.5,33.3(按照插入次序)。下乙個元素被pop()忽略掉了,所以最後乙個迴圈依次列印33.3,22.2,11.1。
再次學習css
css選擇器優先順序總結 wanglehui css id 選擇器詳解 limit 4 offset 3指示mysql等dbms返回從第3行 從0行計數 起的4行資料。第乙個數字是檢索的行數,第二個數字是指從哪兒開始。select prod name from products limit 4 of...
再次學習git
在我工作中,一直使用的是svn版本管理工具,說實話已經夠用了。但是,自己有時會寫的一些小demo,做點學習或者其他的用處,寫 總是在不同的地方,不同的裝置,這就顯示出了svn的缺點。所以要使用。不過呢,之前接觸過git,但是長久不用已經生疏了,甚至遺忘了。所以,這兩天又重新學了一遍,希望不要再忘了,...
STL容器 優先佇列priority queue
priority queue顧名思義,是乙個具有權值概念的queue,它和queue一樣允許加入新元素 移除舊元素等功能。由於這是乙個queue,所以只允許在底部加入元素,從頂部取出元素。但優先佇列帶有權值概念,其內的元素自動按照元素的權值排序。權值最高者排在最前面。stl的priority que...