- 算法訓練營:海量圖解+競賽刷題(進階篇)
- 陳小玉
- 519字
- 2024-01-22 18:54:26
原理2 優先隊列詳解
普通的隊列是一種先進先出的數據結構,從隊尾入隊,從隊頭出隊。在優先隊列中,元素被賦予優先級,優先級高的元素先出隊。上節介紹了優先隊列的實現原理,在實際的算法實現中,可以直接調用C++中的STL函數priority_queue,在Java中也提供了優先隊列接口PriorityQueue。
優先隊列priority_queue的成員函數如下。
? empty():若優先隊列為空,則返回真。
? pop():出隊。
? push():入隊。
? top():取堆頂(隊頭),返回優先隊列中優先級最高的元素。
? size():返回優先隊列中元素的個數。
優先隊列的用法:

其中,第1個參數為數據類型,第2個參數為容器類型,第3個參數為比較函數。后兩個參數根據需要也可以省略。

如何控制優先隊列的優先級?若不是最大值優先,則可以采用下面4種方法。
(1)使用C++自帶的庫函數<functional>。首先,在頭文件中引用include庫函數:

functional提供了以下基于模板的比較函數對象。
? equal_to<Type>:等于。
? not_equal_to<Type>:不等于。
? greater<Type>:大于。
? greater_equal<Type>:大于或等于。
? less<Type>:小于。
? less_equal<Type>:小于或等于。
其次,創建優先隊列:

注意:“>>”會被認為錯誤,它是右移運算符,這里用空格號隔開,表示的含義不同。
(2)自定義優先級①,隊列元素為數值型:

創建優先隊列:

(3)自定義優先級②,隊列元素為結構體類型:

創建優先隊列:

(4)自定義優先級③,隊列元素為結構體類型:

創建優先隊列:

推薦閱讀
- 大數據技術基礎
- Microsoft SQL Server企業級平臺管理實踐
- 數據分析實戰:基于EXCEL和SPSS系列工具的實踐
- 大數據可視化
- 數據庫應用基礎教程(Visual FoxPro 9.0)
- Enterprise Integration with WSO2 ESB
- Mastering Machine Learning with R(Second Edition)
- WS-BPEL 2.0 Beginner's Guide
- 智能數據時代:企業大數據戰略與實戰
- 從0到1:JavaScript 快速上手
- Python金融數據分析(原書第2版)
- 圖數據實戰:用圖思維和圖技術解決復雜問題
- 辦公應用與計算思維案例教程
- Oracle數據庫管理、開發與實踐
- 數據分析師養成寶典