国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STL:雙端隊列&容器適配器&仿函數(shù)&優(yōu)先級隊列

這篇具有很好參考價值的文章主要介紹了STL:雙端隊列&容器適配器&仿函數(shù)&優(yōu)先級隊列。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

deque

  • 雙端隊列可以在頭部和尾部進行插入刪除操作
  • 與vector相比,頭插效率高,不需要搬移元素
    與list相比,空間利用率高

deque邏輯上空間是連續(xù)的,物理上并不是,是由一段段小空間拼接而成的

雙端隊列的迭代器比較復(fù)雜

  • cur:指向空間中被遍歷的那個元素
  • first:指向空間開始
  • last:指向空間末尾
  • node:指向map中保存該段空間的地址
    當(dāng)cur走到first或者last位置,說明已經(jīng)將該空間中的元素遍歷結(jié)束,需要找下一塊空間(node++或者–)

STL:雙端隊列&容器適配器&仿函數(shù)&優(yōu)先級隊列,STL,c++,開發(fā)語言

容器適配器

C語言中,棧封裝數(shù)組,隊列封裝鏈表,
C++中,棧和隊列使用deque實現(xiàn)
原因:vector中的擴容成本高,list中有大量節(jié)點,造成很多內(nèi)存碎片

容器適配器是將一個接口轉(zhuǎn)換成另外一種接口,這樣解釋確實過于簡單,

  • 先要知道,deque中定義了許多的接口如頭插頭刪,尾插尾刪,判空等操作,
  • 這些操作不管是棧中特性函數(shù),還是隊列中的特性函數(shù),deque中都有
  • 若實現(xiàn)stack,stl把deque作為stack的底層,抽出deque中的部分方法,
  • 比如尾插尾刪,判空,返回隊尾元素,進行包裝從而實現(xiàn)棧;尾插尾刪函數(shù)變成出棧入棧函數(shù),返回隊尾元素函數(shù)變成返回棧頂元素函數(shù)

迭代器適配器:list反向迭代器的實現(xiàn),封裝了正向迭代器(抽出正向迭代器中的方法重新進行封裝)

仿函數(shù)

仿函數(shù)又稱函數(shù)對象(可以像函數(shù)一樣調(diào)用的對象稱為函數(shù)對象)
實現(xiàn):在類中將函數(shù)調(diào)用運算符() 重載,該類的對象就可以像函數(shù)一樣使用

STL:雙端隊列&容器適配器&仿函數(shù)&優(yōu)先級隊列,STL,c++,開發(fā)語言
重載()后,通過less類定義的對象,去調(diào)用成員函數(shù)

優(yōu)先級隊列(仿函數(shù)與容器適配器的應(yīng)用)

封裝vector實現(xiàn)

  • 優(yōu)先級隊列本質(zhì)是堆
  • 堆是完全二叉樹+條件(父節(jié)點比孩子節(jié)點大或者?。?br> 完全二叉樹適合用數(shù)組存儲
    所以優(yōu)先級隊列的底層是用vector來存儲元素

STL:雙端隊列&容器適配器&仿函數(shù)&優(yōu)先級隊列,STL,c++,開發(fā)語言

適配器詳述

  • 103行,vector是一個類模板,用int將該模板實例化,所以vector< int >是一個實際類型,將這個類型名用container代替,并用新類型名定義一個變量
  • 優(yōu)先級隊列的pop函數(shù)是使用vector中的pop作為核心邏輯,并添加新邏輯而實現(xiàn)的
  • 添加新的函數(shù),向上調(diào)整和向下調(diào)整函數(shù)
  • 組成了新容器的接口,把這種容器稱為容器適配器

所以stack和queue嚴(yán)格說并不是容器,而是容器適配器

仿函數(shù)詳述

仿函數(shù)又稱函數(shù)對象(可以像函數(shù)一樣調(diào)用的對象稱為函數(shù)對象)
實現(xiàn):在類中將函數(shù)調(diào)用運算符重載,該類的對象就可以像函數(shù)一樣使用
函數(shù)調(diào)用運算符就是 ( )

通俗來說就是把函數(shù)封裝到類里面,要使用該函數(shù)時,只需要定義一個這個類的對象,通過對象調(diào)用運算符重載函數(shù),使用該功能

代碼84~100行是實現(xiàn)兩個不同比較方式的仿函數(shù),同容器適配器一樣,在類模板參數(shù)列表中重命名,112行定義類對象,117行是對象調(diào)用()運算符重載函數(shù),將括號中的兩個參數(shù)傳給類中的成員函數(shù)

sort中仿函數(shù)的應(yīng)用

sort是一個函數(shù)模板

  • sort的三個參數(shù),前兩個參數(shù)是待排序的區(qū)間,第三個參數(shù)是排序方式
  • 而sort是一個函數(shù),參數(shù)是普通變量
  • 仿函數(shù)是一個類型,第三個參數(shù)不能傳類型,
    所以仿函數(shù)要想作為sort函數(shù)的參數(shù),需要這樣寫
  • 后面加()表面這個類產(chǎn)生了一個匿名對象

STL:雙端隊列&容器適配器&仿函數(shù)&優(yōu)先級隊列,STL,c++,開發(fā)語言

而arr是指針變量,迭代器的本質(zhì)又是指針,所以可以推出arr就是一個迭代器對象文章來源地址http://www.zghlxwxcb.cn/news/detail-602600.html

到了這里,關(guān)于STL:雙端隊列&容器適配器&仿函數(shù)&優(yōu)先級隊列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【c++】:“無敵的適配器來咯“棧和隊列模擬實現(xiàn)以及優(yōu)先級隊列的模擬實現(xiàn)。

    【c++】:“無敵的適配器來咯“棧和隊列模擬實現(xiàn)以及優(yōu)先級隊列的模擬實現(xiàn)。

    ? ? 文章目錄 前言 一.棧和隊列的模擬實現(xiàn) 二.優(yōu)先級隊列 總結(jié) ? 棧的介紹和使用: 1. stack是一種容器適配器,專門用在具有后進先出操作的上下文環(huán)境中,其刪除只能從容器的一端進行元素的插入與提取操作。 2. stack是作為容器適配器被實現(xiàn)的,容器適配器即是對特定類封

    2024年02月01日
    瀏覽(21)
  • 【STL】順序容器與容器適配器

    【STL】順序容器與容器適配器

    給出以下順序容器表: 順序容器類型 作用 vector 可變大小的數(shù)組,支持快速訪問,除尾元素的插入或者刪除很慢 string 與vector相似,只不過專門用來存字符 list 雙向鏈表。只能雙向順序訪問,插入刪除的效率都很高 forward_list 單向鏈表。只能單向順序訪問,插入刪除的效率都

    2024年04月14日
    瀏覽(25)
  • C++ [STL容器適配器]

    C++ [STL容器適配器]

    本文已收錄至《C++語言》專欄! 作者:ARMCSKGT 前面我們介紹了適配器模式中的反向迭代器,反向迭代器通過容器所支持的正向迭代器適配為具有反向迭代功能的迭代器,本節(jié)我們介紹STL中另一種適配器: 容器適配器 ! 前面我們提到過STL適配器模式,關(guān)于適配器的解釋: S

    2024年02月11日
    瀏覽(25)
  • C++ STL學(xué)習(xí)之【容器適配器】

    C++ STL學(xué)習(xí)之【容器適配器】

    ?個人主頁: 北 海 ??所屬專欄: C++修行之路 ??每篇一句: 圖片來源 A year from now you may wish you had started today. 明年今日,你會希望此時此刻的自己已經(jīng)開始行動了。 適配器(配接器)是 STL 中的六大組件之一,扮演著軸承、轉(zhuǎn)換器的角色,使得 STL 中組件的使用更為靈活,

    2023年04月22日
    瀏覽(20)
  • STL: 容器適配器stack 與 queue

    STL: 容器適配器stack 與 queue

    ? 目錄 1.容器適配器 1.1 STL標(biāo)準(zhǔn)庫中stack和queue的底層結(jié)構(gòu) 1.2 deque的簡單介紹(了解) 1.2.1 deque的原理介紹 1.2.2 deque的缺陷 1.2.3 為什么選擇deque作為stack和queue的底層默認(rèn)容器 2. stack的介紹和使用 2.1 stack的介紹 ?2.2 stack的使用 2.3 利用deque模擬實現(xiàn)stack 3.queue的介紹和使用 3.1 queue的

    2024年02月05日
    瀏覽(24)
  • 22 標(biāo)準(zhǔn)模板庫STL之容器適配器

    概述 ????????提到適配器,我們的第一印象是想到設(shè)計模式中的適配器模式:將一個類的接口轉(zhuǎn)化為另一個類的接口,使原本不兼容而不能合作的兩個類,可以一起工作。STL中的容器適配器與此類似,是一個封裝了序列容器的類模板,它在一般序列容器的基礎(chǔ)上提供了一

    2024年02月05日
    瀏覽(23)
  • 【C++】STL之容器適配器——使用deque適配stack和queue

    【C++】STL之容器適配器——使用deque適配stack和queue

    個人主頁:??在肯德基吃麻辣燙 分享一句喜歡的話:熱烈的火焰,冰封在最沉默的火山深處。 本文章主要介紹容器適配器的功能,以及一個適配的場景。 容器適配器,按字面意思理解的話,就是用來對一個容器進行匹配的。在C++STL中,容器有:vector,list,deque,map,set等。

    2024年02月16日
    瀏覽(25)
  • 【C++】STL之適配器---用deque實現(xiàn)棧和隊列

    【C++】STL之適配器---用deque實現(xiàn)棧和隊列

    目錄 前言 一、deque ?1、deque 的原理介紹 ?2、deque 的底層結(jié)構(gòu) ?3、deque 的迭代器 ?4、deque 的優(yōu)缺點 ? 4.1、優(yōu)點 ? 4.2、缺點 二、stack 的介紹和使用 ?1、stack 的介紹 ?2、stack 的使用 ?3、stack 的模擬實現(xiàn) 三、queue 的介紹和使用 ?1、queue 的介紹? ?2、queue 的使用 ?3、queue 的模

    2024年02月07日
    瀏覽(23)
  • STL容器適配器 -- stack和queue(使用+實現(xiàn))(C++)

    STL容器適配器 -- stack和queue(使用+實現(xiàn))(C++)

    棧和隊列數(shù)據(jù)結(jié)構(gòu)+畫圖分析如果對棧和隊列的結(jié)構(gòu)不了解的,可以先看該鏈接的內(nèi)容 使用stack時需要頭文件 #includestack stack是一種容器適配器,用于具有 后進先出 (LIFO)的環(huán)境中。只能從容器的一端(棧頂),執(zhí)行刪除、插入和提取操作。 stack是作為容器適配器實現(xiàn)的,容器

    2024年02月14日
    瀏覽(30)
  • 【C++】STL 算法 ⑩ ( 函數(shù)適配器 | 函數(shù)適配器概念 | 函數(shù)適配器分類 | 函數(shù)適配器輔助函數(shù) | std::bind2nd 函數(shù)原型及示例 | std::bind 函數(shù)原型及示例 )

    【C++】STL 算法 ⑩ ( 函數(shù)適配器 | 函數(shù)適配器概念 | 函數(shù)適配器分類 | 函數(shù)適配器輔助函數(shù) | std::bind2nd 函數(shù)原型及示例 | std::bind 函數(shù)原型及示例 )

    在 STL 中 預(yù)定義了很多 函數(shù)對象 , 如果要 對 函數(shù)對象 的 參數(shù) / 返回值 進行 計算 或 設(shè)置 , 可以 使用 \\\" 函數(shù)適配器 \\\" 實現(xiàn)上述需求 ; \\\" 函數(shù)適配器 \\\" 可以 將 已存在的 函數(shù)對象 轉(zhuǎn)化為 另一種符合要求的 函數(shù)對象 ; \\\" 函數(shù)適配器 \\\" 定義在 functional 頭文件 中 ; \\\" 函數(shù)適配器

    2024年02月02日
    瀏覽(59)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包