STL容器 優先佇列priority queue

2021-08-19 06:30:46 字數 924 閱讀 9557

priority_queue顧名思義,是乙個具有權值概念的queue,它和queue一樣允許加入新元素、移除舊元素等功能。由於這是乙個queue,所以只允許在底部加入元素,從頂部取出元素。但優先佇列帶有權值概念,其內的元素自動按照元素的權值排序。權值最高者排在最前面。

stl的priority_queue用二叉堆來實現,關於二叉堆的實現以及堆排序在另外的文章:二叉堆、堆排序。而stl的heap預設是以vector為底層容器。priority_queue只是在stl容器外又封裝了一層,因此它往往不被歸類為容器(container),而被歸類為容器介面卡(container adapter)。

priority_queue的實現

template , typename compare = less>

class priority_queue

explicit priority_queue(const compare& x) : c(), comp(x) {}

template priority_queue(inputiterator first, inputiterator last, const compare& x) : c(first, last)

template priority_queue(inputiterator first, inputiterator last) :c(first, last)

bool empty() const

size_type size() const

const_reference top() const

void push(const value_type& x)

stl_unwind(c.clear());

} void pop()

__stl_unwind(c.clear());

}};

STL容器 優先佇列

優先佇列 在佇列基礎上按優先順序順序進入佇列 0.標頭檔案 include greater和less的優先順序比較 和自定義的作用一樣 在標頭檔案 include 裡 1.建立乙個優先順序佇列時有兩種申請方式 priority queueq或者priority queue,greater q,第一種...

STL容器之優先佇列

優先順序佇列,以前刷題的時候用的比較熟,現在竟然我只能記得它的關鍵字是priority queue 太傷了 在一些定義了權重的地方這個資料結構是很有用的。先回顧佇列的定義 佇列 queue 維護了一組物件,進入佇列的物件被放置在尾部,下乙個被取出的元素則取自佇列的首部。priority queue特...

STL容器之優先佇列

參考 拼裝小火車 要學會如何定義最小優先佇列 最大優先佇列 對於自己定義的結構體,如何定義最小 最大優先佇列 核心 定義比較結構 struct cmp1 struct cmp2 自定義資料結構 struct number1 struct number2 priority queue que 採用預設...