溫馨提示×

c++ priority_queue詳解

c++
小億
120
2024-01-05 16:19:58
欄目: 編程語言

priority_queue是C++ STL中的一種容器,它是一個按照優先級排序元素的隊列。優先級最高的元素(根據比較函數確定)總是位于隊列的最前面。

priority_queue的特點:

  1. 元素的順序是由比較函數決定的,默認情況下,元素以大根堆的形式排列,即根節點的值最大。
  2. 從priority_queue中取出元素時,總是取出優先級最高的元素。
  3. priority_queue底層實現通常是使用二叉堆。

priority_queue的使用步驟:

  1. 包含頭文件:#include
  2. 聲明一個priority_queue對象,指定元素類型和比較函數,比較函數可以是函數指針、函數對象或者lambda表達式。
  3. 向priority_queue中插入元素:push()函數。
  4. 從priority_queue中取出元素:top()函數。
  5. 刪除priority_queue中的元素:pop()函數。
  6. 判斷priority_queue是否為空:empty()函數。
  7. 獲取priority_queue中元素的個數:size()函數。

priority_queue的常用函數:

  1. push(element):將元素element插入priority_queue中。
  2. top():返回priority_queue中優先級最高的元素。
  3. pop():刪除priority_queue中優先級最高的元素。
  4. empty():判斷priority_queue是否為空。
  5. size():返回priority_queue中元素的個數。

示例代碼:

#include <iostream>
#include <queue>

int main() {
    // 聲明一個存放整數的priority_queue,默認為大根堆
    std::priority_queue<int> pq;

    // 插入元素
    pq.push(10);
    pq.push(30);
    pq.push(20);

    // 獲取優先級最高的元素
    std::cout << "Top element: " << pq.top() << std::endl;

    // 刪除優先級最高的元素
    pq.pop();

    // 判斷priority_queue是否為空
    if (pq.empty()) {
        std::cout << "Priority queue is empty." << std::endl;
    } else {
        std::cout << "Priority queue is not empty." << std::endl;
    }

    // 獲取priority_queue中元素的個數
    std::cout << "Size of priority queue: " << pq.size() << std::endl;

    return 0;
}

輸出結果:

Top element: 30
Priority queue is not empty.
Size of priority queue: 2

這是一個簡單的priority_queue的示例,演示了插入元素、獲取最高優先級元素、刪除最高優先級元素、判斷是否為空以及獲取元素個數的基本操作。實際使用中,可以根據需要自定義比較函數來實現不同的優先級順序。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女