STL中關於heap的函式

2021-06-27 13:00:28 字數 741 閱讀 2796

在stl中,如果要用到堆,則有五個函式,make_heap,pop_heap,push_heap,heap_sort,和is_heap,其中is_heap和heap_sort就是判斷容器是否符合堆的條件和把容器中元素進行堆排序。

mak_heap是把容器中制定迭代器之間的元素進行建堆操作。

push_heap,把容器最末尾的元素進行上調,即相當於是插入乙個元素,因此如果要往堆中插入元素,例如vector構成的堆,應該先用push_back()函式將乙個元素插入到vector容器的末尾,然後呼叫push_heap()函式進行上調。

pop_heap,把堆頂元素刪除,此時的刪除是把對頂的元素,和最末尾的元素進行交換,然後進行下慮操作。此後,vector中最後乙個元素就是剛才從堆中pop出來的元素,此時只需要將這個元素在vector中進行pop_back()即可刪除,維護這個堆。

總結:插入時,先用vector插入,然後呼叫push_heap()函式上慮,刪除時,先用pop_heap()函式進行下慮,然後用vector的pop_back()函式進行刪除即可,以下是這幾個函式應用的**,可以體會一下:

#include#include#includeusing namespace std;

int main()

{ const int n=100;

int a[n];

generate(a,a+n,rand);

int k=20;

vectorresult;

for(int i=0;i

STL中heap相關函式

heap並不是屬於stl中的containers,而是在下提供了相關的函式make heap,sort heap,pop heap,push heap 函式的說明 make heap first,last,comp 預設是建立最大堆的。對int型別,可以在第三個引數傳入greater 得到最小堆,傳...

STL中heap相關函式用法

這個函式用來將一段現有的資料轉化為乙個heap template1 make heap randomaccessiterator first,randomaccessiterator last 2 make heap randomaccessiterator first,randomaccessit...

STL中堆 heap 函式的使用

所需標頭檔案 algorithm 語言環境 c 一般只用到四個make heap sort heap pop heap push heap。首先這四個函式的引數都一樣 first 首元素的位址 last 尾元素的位址 cmp比較函式 返回值都為void 這四個函式都是建立在陣列的基礎上的 cmp引數...