C++语言基础 —— STL —— 容器与迭代器 —— heap
生活随笔
收集整理的這篇文章主要介紹了
C++语言基础 —— STL —— 容器与迭代器 —— heap
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【概述】
在 STL 中,并沒有將堆作為一種容器,其實現需要借助更低一層的容器組件作為其底層機制,比如:list、priority_queue 等,heap 的底層機制 vector 本身就是一個類模板,heap 基于 vector 便實現了對各種數據類型的操作。
heap 是一個類屬算法,其包含在頭文件 <algorithm> 中,在 STL 中,heap 被默認調整成為小根堆,但可以通過自定義??cmp() 函數實現所需的大根堆或小根堆。
【操作】
在 STL 中,常用的堆操作有以下 4 個:
- make_heap(first,end,cmp()):將這范圍 [first,end)?的數組或向量建成一個堆,在第三個參數缺省時,默認為大根堆
- pop_heap(first,end,cmp()):將最大/最小的元素從堆中彈出,其本質并非真的將最大最小的元素彈出,而是根據 cmp() 函數重新排序堆,只是將 first 與 end 交換,并將范圍由 [first,end) 改為 [first,end-1)
- push_heap(first,end,cmp()):假設范圍 [first,end-1) 是一個有效的堆,然后將新元素加進來,根據 cmp() 函數構建一個新堆
- sort_heap(first,end,cmp()):對范圍 [first,end) 的序列根據 cmp() 重新排序,相應的,其破壞了堆的結構
?
總結
以上是生活随笔為你收集整理的C++语言基础 —— STL —— 容器与迭代器 —— heap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理论基础 —— 队列 —— 链队列
- 下一篇: s3c2440移植MQTT