最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ Boost Heap使用實(shí)例詳解

 更新時(shí)間:2022年11月03日 09:27:54   作者:無(wú)水先生  
Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱

一、說(shuō)明Boost.Heap

Boost.Heap 也可以稱為 Boost.PriorityQueue,因?yàn)樵搸?kù)提供了幾個(gè)優(yōu)先級(jí)隊(duì)列。但是,Boost.Heap 中的優(yōu)先級(jí)隊(duì)列與 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 中定義。一般來(lái)說(shuō),這個(gè)類的行為類似于 std::priority_queue,除了它允許你迭代元素。迭代中返回的元素順序是隨機(jī)的。

boost::heap::priority_queue 類型的對(duì)象可以相互比較。示例 17.1 中的比較返回 true,因?yàn)?pq 的元素比 pq2 多。如果兩個(gè)隊(duì)列具有相同數(shù)量的元素,則將成對(duì)比較元素。

示例 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 中定義。一般來(lái)說(shuō),這個(gè)類的行為類似于 std::priority_queue,除了它允許你迭代元素。迭代中返回的元素順序是隨機(jī)的。

boost::heap::priority_queue 類型的對(duì)象可以相互比較。示例 17.1 中的比較返回 true,因?yàn)?pq 的元素比 pq2 多。如果兩個(gè)隊(duì)列具有相同數(shù)量的元素,則將成對(duì)比較元素。

示例 17.2。使用 boost::heap::binomial_heap

示例 17.2 引入了類 boost::heap::binomial_heap。除了允許您按優(yōu)先級(jí)順序迭代元素之外,它還允許您合并優(yōu)先級(jí)隊(duì)列。一個(gè)隊(duì)列中的元素可以添加到另一個(gè)隊(duì)列。

示例在隊(duì)列 bh 上調(diào)用 merge()。隊(duì)列 bh2 作為參數(shù)傳遞。對(duì) merge() 的調(diào)用將數(shù)字 4 從 bh2 移動(dòng)到 bh。調(diào)用后,bh 包含四個(gè)數(shù)字,bh2 為空。

for 循環(huán)在 bh 上調(diào)用 ordered_begin() 和 ordered_end()。 ordered_begin() 返回一個(gè)從高優(yōu)先級(jí)元素迭代到低優(yōu)先級(jí)元素的迭代器。因此,示例 17.2 將數(shù)字 4、3、2 和 1 寫入標(biāo)準(zhǔn)輸出。

示例 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 允許您在元素添加到隊(duì)列后更改它們。示例 17.3 保存了 push() 返回的句柄,從而可以訪問(wèn)存儲(chǔ)在 bh 中的數(shù)字 2。

update() 是 boost::heap::binomial_heap 的成員函數(shù),可以調(diào)用它來(lái)更改元素。示例 17.3 調(diào)用成員函數(shù)將 2 替換為 4。然后,使用 top() 獲取具有最高優(yōu)先級(jí)的元素,現(xiàn)在為 4。

除了 update() 之外,boost::heap::binomial_heap 還提供了其他成員函數(shù)來(lái)更改元素。如果您事先知道更改是否會(huì)導(dǎo)致更高或更低的優(yōu)先級(jí),則可以調(diào)用成員函數(shù) increase() 或 decrease()。在示例 17.3 中,對(duì) update() 的調(diào)用可以替換為對(duì) increase() 的調(diào)用,因?yàn)樵摂?shù)字從 2 增加到 4。

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

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

相關(guān)文章

  • C語(yǔ)言 指針與二維數(shù)組詳解

    C語(yǔ)言 指針與二維數(shù)組詳解

    本文主要介紹C語(yǔ)言 指針與二維數(shù)組,這里整理了詳細(xì)的資料及示例代碼,有需要的小伙伴可以參考下
    2016-08-08
  • C語(yǔ)言 fscanf 和 fprintf函數(shù)示例詳解

    C語(yǔ)言 fscanf 和 fprintf函數(shù)示例詳解

    這篇文章主要介紹了 C語(yǔ)言 fscanf 和 fprintf函數(shù)示例詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-12-12
  • C/C++實(shí)現(xiàn)獲取系統(tǒng)時(shí)間的示例代碼

    C/C++實(shí)現(xiàn)獲取系統(tǒng)時(shí)間的示例代碼

    C 標(biāo)準(zhǔn)庫(kù)提供了 time() 函數(shù)與 localtime() 函數(shù)可以獲取到當(dāng)前系統(tǒng)的日歷時(shí)間。本文將通過(guò)一些簡(jiǎn)單的示例為大家講講C++獲取系統(tǒng)時(shí)間的具體方法,需要的可以參考一下
    2022-12-12
  • C++中使用function和bind綁定類成員函數(shù)的方法詳解

    C++中使用function和bind綁定類成員函數(shù)的方法詳解

    這篇文章主要介紹了C++中使用function和bind綁定類成員函數(shù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • C語(yǔ)言 文件操作解析詳解及實(shí)例代碼

    C語(yǔ)言 文件操作解析詳解及實(shí)例代碼

    這篇文章主要介紹了C語(yǔ)言 文件操作解析詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 用C語(yǔ)言的泛型實(shí)現(xiàn)交換兩個(gè)變量值

    用C語(yǔ)言的泛型實(shí)現(xiàn)交換兩個(gè)變量值

    在日常編程里面經(jīng)常會(huì)遇到交換兩個(gè)變量的內(nèi)容的任務(wù),對(duì)于泛型類型而言有兩種泛型策略來(lái)實(shí)現(xiàn),下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)。
    2016-08-08
  • C++ decltype類型說(shuō)明符

    C++ decltype類型說(shuō)明符

    在C++中,decltype作為操作符,用于查詢表達(dá)式的數(shù)據(jù)類型。decltype在C++11標(biāo)準(zhǔn)制定時(shí)引入,主要是為泛型編程而設(shè)計(jì),以解決泛型編程中,由于有些類型由模板參數(shù)決定,而難以(甚至不可能)表示之的問(wèn)題。
    2016-03-03
  • C語(yǔ)言實(shí)現(xiàn)隨機(jī)讀寫文件的函數(shù)詳解

    C語(yǔ)言實(shí)現(xiàn)隨機(jī)讀寫文件的函數(shù)詳解

    文件的隨機(jī)讀寫,可以在文件中指定的任意位置讀或者寫。這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)隨機(jī)讀寫文件的3個(gè)函數(shù),感興趣的可以了解一下
    2023-03-03
  • 利用C++實(shí)現(xiàn)一個(gè)線程安全的map

    利用C++實(shí)現(xiàn)一個(gè)線程安全的map

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個(gè)線程安全的map(使用ChatCPT生成),代碼是通過(guò)兩輪對(duì)話完善的,感興趣的小伙伴可以了解一下
    2023-05-05
  • C++中淺拷貝與深拷貝的詳解及其作用介紹

    C++中淺拷貝與深拷貝的詳解及其作用介紹

    這篇文章主要介紹了C++中淺拷貝與深拷貝的詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

城固县| 波密县| 黄龙县| 海淀区| 彩票| 南郑县| 鄂温| 珠海市| 龙江县| 东源县| 曲沃县| 曲松县| 平利县| 奇台县| 陵川县| 汾阳市| 丁青县| 大方县| 怀安县| 教育| 衡水市| 磐石市| 调兵山市| 梁山县| 遂平县| 铁岭市| 乌鲁木齐县| 襄城县| 观塘区| 昌吉市| 台南县| 大埔区| 新田县| 肇东市| 青海省| 桂阳县| 庄浪县| 碌曲县| 古交市| 樟树市| 灌阳县|