亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++ Boost Heap使用實例詳解

 更新時間:2022年11月03日 09:27:54   作者:無水先生  
Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱

一、說明Boost.Heap

Boost.Heap 也可以稱為 Boost.PriorityQueue,因為該庫提供了幾個優(yōu)先級隊列。但是,Boost.Heap 中的優(yōu)先級隊列與 std::priority_queue 不同,它支持更多功能。

二、功能示例

示例 17.1。使用 boost::heap::priority_queue

#include <boost/heap/priority_queue.hpp>
#include <iostream>
using namespace boost::heap;
int main()
{
  priority_queue<int> pq;
  pq.push(2);
  pq.push(3);
  pq.push(1);
  for (int i : pq)
    std::cout << i << '\n';
  priority_queue<int> pq2;
  pq2.push(4);
  std::cout << std::boolalpha << (pq > pq2) << '\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

#include <boost/heap/binomial_heap.hpp>
#include <iostream>
using namespace boost::heap;
int main()
{
  binomial_heap<int> bh;
  bh.push(2);
  bh.push(3);
  bh.push(1);
  binomial_heap<int> bh2;
  bh2.push(4);
  bh.merge(bh2);
  for (auto it = bh.ordered_begin(); it != bh.ordered_end(); ++it)
    std::cout << *it << '\n';
  std::cout << std::boolalpha << bh2.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 中的元素

#include <boost/heap/binomial_heap.hpp>
#include <iostream>
using namespace boost::heap;
int main()
{
  binomial_heap<int> bh;
  auto handle = bh.push(2);
  bh.push(3);
  bh.push(1);
  bh.update(handle, 4);
  std::cout << bh.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ù)來更改元素。如果您事先知道更改是否會導致更高或更低的優(yōu)先級,則可以調(diào)用成員函數(shù) increase() 或 decrease()。在示例 17.3 中,對 update() 的調(diào)用可以替換為對 increase() 的調(diào)用,因為該數(shù)字從 2 增加到 4。

Boost.Heap 提供了額外的優(yōu)先級隊列,其成員函數(shù)的主要區(qū)別在于它們的運行時復雜度。例如,如果您希望成員函數(shù) push() 具有恒定的運行時復雜度,則可以使用類 boost::heap::fibonacci_heap。 Boost.Heap 上的文檔提供了一個表格,其中概述了各種類和函數(shù)的運行時復雜性。

到此這篇關(guān)于C++ Boost Heap使用實例詳解的文章就介紹到這了,更多相關(guān)C++ Boost Heap內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C/C++中關(guān)于std::string的compare陷阱示例詳解

    C/C++中關(guān)于std::string的compare陷阱示例詳解

    這篇文章主要給大家介紹了關(guān)于C/C++中關(guān)于std::string的compare陷阱的相關(guān)資料,文中先對C/C++中的std::string進行了簡單的介紹,通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-11-11
  • C語言模式實現(xiàn)C++繼承和多態(tài)的實例代碼

    C語言模式實現(xiàn)C++繼承和多態(tài)的實例代碼

    本篇文章主要介紹了C語言模式實現(xiàn)C++繼承和多態(tài)的實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 基于C語言實現(xiàn)五子棋游戲完整實例代碼

    基于C語言實現(xiàn)五子棋游戲完整實例代碼

    這篇文章主要介紹了基于C語言實現(xiàn)五子棋游戲完整實例代碼,相信對于學習游戲開發(fā)的朋友會有一定的幫助與借鑒價值,需要的朋友可以參考下
    2014-08-08
  • C++ continue和break語句

    C++ continue和break語句

    這篇文章主要介紹了C++ continue和break語句,文章圍繞continue和break語句的相關(guān)資料展開詳細內(nèi)容,需要的朋友可以參考一下,希望對大家有所幫助
    2021-11-11
  • C語言編程中生成隨機數(shù)的入門教程

    C語言編程中生成隨機數(shù)的入門教程

    這篇文章主要介紹了C語言編程中生成隨機數(shù)的入門教程,包括利用rand()函數(shù)來編寫隨機數(shù)生成器的示例,要的朋友可以參考下
    2015-12-12
  • C語言 數(shù)組指針詳解及示例代碼

    C語言 數(shù)組指針詳解及示例代碼

    本文主要介紹C語言 數(shù)組指針,這里整理了相關(guān)資料并附示例待會及實現(xiàn)結(jié)果,幫助大家學習C語言中指針的知識,有需要學習此部分內(nèi)容的朋友可以參考下
    2016-08-08
  • 詳解C語言處理算經(jīng)中著名問題百錢百雞

    詳解C語言處理算經(jīng)中著名問題百錢百雞

    古代的很多數(shù)學問題都可以用現(xiàn)代的編程語言去嘗試解決,就如本篇,將會帶你通過C語言來解決算經(jīng)中百錢百雞問題,感興趣的朋友來看看吧
    2022-02-02
  • Matlab實現(xiàn)同步子圖視角的方法詳解

    Matlab實現(xiàn)同步子圖視角的方法詳解

    這篇文章主要和大家分享三個可以Matlab中更簡便實現(xiàn)同步子圖視角的技巧,文中的示例代碼講解詳細,感興趣的小伙伴可以學習一下
    2022-06-06
  • C++中的函數(shù)匯總

    C++中的函數(shù)匯總

    這篇文章主要介紹了 C++中的函數(shù)匯總的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • 淺析結(jié)束程序函數(shù)exit, _exit,atexit的區(qū)別

    淺析結(jié)束程序函數(shù)exit, _exit,atexit的區(qū)別

    在一個程序中最多可以用atexit()注冊32個處理函數(shù),這些處理函數(shù)的調(diào)用順序與其注冊的順序相反,也即最先注冊的最后調(diào)用,最后注冊的最先調(diào)用
    2013-09-09

最新評論