下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第C++BoostHeap使用實例詳解目錄一、說明Boost.Heap二、功能示例
一、說明Boost.Heap
Boost.Heap也可以稱為Boost.PriorityQueue,因為該庫提供了幾個優(yōu)先級隊列。但是,Boost.Heap中的優(yōu)先級隊列與std::priority_queue不同,它支持更多功能。
二、功能示例
示例17.1。使用boost::heap::priority_queue
#includeboost/heap/priority_queue.hpp
#includeiostream
usingnamespaceboost::heap;
intmain()
priority_queueint
pq.push(2);
pq.push(3);
pq.push(1);
for(inti:pq)
std::couti'\n';
priority_queueintpq2;
pq2.push(4);
std::coutstd::boolalpha(pqpq2)'\n';
}
Example17.1
示例17.1使用了boost::heap::priority_queue類,該類在boost/heap/priority_queue.hpp中定義。一般來說,這個類的行為類似于std::priority_queue,除了它允許你迭代元素。迭代中返回的元素順序是隨機的。
boost::heap::priority_queue類型的對象可以相互比較。示例17.1中的比較返回true,因為pq的元素比pq2多。如果兩個隊列具有相同數(shù)量的元素,則將成對比較元素。
示例17.2。使用boost::heap::binomial_heap
#includeboost/heap/binomial_heap.hpp
#includeiostream
usingnamespaceboost::heap;
intmain()
binomial_heapint
bh.push(2);
bh.push(3);
bh.push(1);
binomial_heapintbh2;
bh2.push(4);
bh.merge(bh2);
for(autoit=bh.ordered_begin();it!=bh.ordered_end();++it)
std::cout*it'\n';
std::coutstd::boolalphabh2.empty()'\n';
}
Example17.2
示例17.1使用了boost::heap::priority_queue類,該類在boost/heap/priority_queue.hpp中定義。一般來說,這個類的行為類似于std::priority_queue,除了它允許你迭代元素。迭代中返回的元素順序是隨機的。
boost::heap::priority_queue類型的對象可以相互比較。示例17.1中的比較返回true,因為pq的元素比pq2多。如果兩個隊列具有相同數(shù)量的元素,則將成對比較元素。
示例17.2。使用boost::heap::binomial_heap
示例17.2引入了類boost::heap::binomial_heap。除了允許您按優(yōu)先級順序迭代元素之外,它還允許您合并優(yōu)先級隊列。一個隊列中的元素可以添加到另一個隊列。
示例在隊列bh上調(diào)用merge()。隊列bh2作為參數(shù)傳遞。對merge()的調(diào)用將數(shù)字4從bh2移動到bh。調(diào)用后,bh包含四個數(shù)字,bh2為空。
for循環(huán)在bh上調(diào)用ordered_begin()和ordered_end()。ordered_begin()返回一個從高優(yōu)先級元素迭代到低優(yōu)先級元素的迭代器。因此,示例17.2將數(shù)字4、3、2和1寫入標準輸出。
示例17.3。更改boost::heap::binomial_heap中的元素
#includeboost/heap/binomial_heap.hpp
#includeiostream
usingnamespaceboost::heap;
intmain()
binomial_heapint
autohandle=bh.push(2);
bh.push(3);
bh.push(1);
bh.update(handle,4);
std::coutbh.top()'\n';
}
boost::heap::binomial_heap允許您在元素添加到隊列后更改它們。示例17.3保存了push()返回的句柄,從而可以訪問存儲在bh中的數(shù)字2。
update()是boost::heap::binomial_heap的成員函數(shù),可以調(diào)用它來更改元素。示例17.3調(diào)用成員函數(shù)將2替換為4。然后,使用top()獲取具有最高優(yōu)先級的元素,現(xiàn)在為4。
除了update()之外,boost::heap::binomial_heap還提供了其他成員函數(shù)來更改元素。如果您事先知道更改是否會導(dǎo)致更高或更低的優(yōu)先級,則可以調(diào)用成員函數(shù)increase()或decrease()。在示例17.3中,對update()的調(diào)用可以替換為對increase()的調(diào)用,因為該數(shù)字從2增加到4。
Boost.Heap提供了額外的優(yōu)先級隊列,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 道路景觀照明設(shè)計方案
- 婦幼保健院醫(yī)藥費用透明化方案
- 消防演練機制構(gòu)建方案
- 人防工程通道標識設(shè)置方案
- 婦幼保健院急救知識普及方案
- 水閘機電設(shè)備維修保養(yǎng)方案
- 工地施工心理健康評估方案
- 2026年廣東茂名市高三高考一模英語試卷試題(含答案詳解)
- 川教版六年級英語上冊Unit X詞匯深度學(xué)習(xí)與結(jié)構(gòu)化應(yīng)用設(shè)計方案
- 跨學(xué)科視域下“校園碳中和”行動方案設(shè)計-以二氧化碳性質(zhì)與轉(zhuǎn)化的深度學(xué)習(xí)為例
- 街道(鄉(xiāng)鎮(zhèn))區(qū)域養(yǎng)老服務(wù)中心建設(shè)驗收指標總分表及驗收標準
- 國家衛(wèi)生部《綜合醫(yī)院分級管理標準》
- 撇洪溝改造工程監(jiān)理規(guī)劃河道整治樣本
- (完整版)保證藥品信息來源合法、真實、安全的管理措施、情況說明及相關(guān)證明
- 預(yù)防兩癌知識講座
- 人教版九年級數(shù)學(xué)第二十四章《圓》單元知識點總結(jié)
- 西班牙語專業(yè)本科論文模板
- GB/T 42288-2022電化學(xué)儲能電站安全規(guī)程
- 地質(zhì)災(zāi)害治理工程用表格(完整資料)
- GB/T 9254.1-2021信息技術(shù)設(shè)備、多媒體設(shè)備和接收機電磁兼容第1部分: 發(fā)射要求
- GB/T 39287-2020閉式膨脹罐
評論
0/150
提交評論