中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c++優先隊列怎么使用

c++
小億
100
2023-08-01 19:30:52
欄目: 編程語言

C++中的優先隊列是一種特殊的隊列,其中的元素按照一定的優先級進行排序。元素的優先級由元素自身的比較函數確定。

下面是使用C++優先隊列的一般步驟:

  1. 包含頭文件:#include <queue>

  2. 聲明一個優先隊列對象:priority_queue<data_type> pq;

  • data_type是隊列中元素的類型,可以是基本數據類型或自定義數據類型。
  1. 添加元素到隊列中:pq.push(element);

  2. 訪問隊列中的頂部元素:top_element = pq.top();

  • top_element是隊列中的最高優先級元素。
  1. 刪除隊列中的頂部元素:pq.pop();
  • 刪除隊列中的最高優先級元素,并將下一個最高優先級元素移至隊列頂部。

注意事項:

  • 默認情況下,優先隊列按降序排列,即最大的元素位于隊列的頂部。如果要按升序排列,則需要自定義比較函數。

  • 如果使用自定義數據類型作為優先隊列的元素,需要重載比較函數(operator< 或 operator>())。

  • 優先隊列可以包含重復元素。

以下是一個使用優先隊列的例子,其中存儲自定義的Book結構體,按照價格從高到低進行排序:

#include <iostream>
#include <queue>
using namespace std;
struct Book {
string title;
double price;
};
// 自定義比較函數
struct CompareBooks {
bool operator()(const Book& b1, const Book& b2) {
return b1.price < b2.price;
}
};
int main() {
priority_queue<Book, vector<Book>, CompareBooks> pq;
// 添加元素
pq.push({"Book 1", 9.99});
pq.push({"Book 2", 7.99});
pq.push({"Book 3", 12.99});
// 訪問隊列中的頂部元素
Book topBook = pq.top();
cout << "Top Book: " << topBook.title << ", Price: " << topBook.price << endl;
// 刪除隊列中的頂部元素
pq.pop();
// 訪問新的頂部元素
topBook = pq.top();
cout << "Top Book: " << topBook.title << ", Price: " << topBook.price << endl;
return 0;
}

輸出結果:

Top Book: Book 3, Price: 12.99
Top Book: Book 1, Price: 9.99

0
运城市| 潢川县| 衡阳县| 德钦县| 皋兰县| 华安县| 兴海县| 惠来县| 泸州市| 淄博市| 兴仁县| 瑞昌市| 搜索| 遂平县| 定州市| 荆门市| 新宾| 襄樊市| 甘泉县| 东乡县| 来宾市| 衡东县| 新化县| 普安县| 西安市| 麻阳| 罗定市| 如皋市| 黔东| 婺源县| 阳山县| 隆尧县| 青阳县| 金门县| 盘山县| 图们市| 肥城市| 锡林浩特市| 明溪县| 乌审旗| 德阳市|