溫馨提示×

c++ priority_queue詳解

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

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

priority_queue的特點(diǎn):

  1. 元素的順序是由比較函數(shù)決定的,默認(rèn)情況下,元素以大根堆的形式排列,即根節(jié)點(diǎn)的值最大。
  2. 從priority_queue中取出元素時(shí),總是取出優(yōu)先級最高的元素。
  3. priority_queue底層實(shí)現(xiàn)通常是使用二叉堆。

priority_queue的使用步驟:

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

priority_queue的常用函數(shù):

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

示例代碼:

#include <iostream>
#include <queue>

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

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

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

    // 刪除優(yōu)先級最高的元素
    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中元素的個(gè)數(shù)
    std::cout << "Size of priority queue: " << pq.size() << std::endl;

    return 0;
}

輸出結(jié)果:

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

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

0