C++BoostHeap使用實例詳解_第1頁
C++BoostHeap使用實例詳解_第2頁
C++BoostHeap使用實例詳解_第3頁
C++BoostHeap使用實例詳解_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論