【c++】【STL】queue詳解

目錄

  • queue的作用
  • 什么是容器適配器
  • queue的接口
    • 構造函數
    • empty
    • size
    • front
    • back
  • queue類的實現

queue的作用

queue是stl庫提供的一種容器適配器,也就是我們數據結構中學到的隊列,是非常常用的數據結構,特點是遵循LILO(last in last out,也就是后進后出)原則。

什么是容器適配器

stl中提供的類很多都叫容器,但有一些叫做容器適配器,容器適配器到底是啥呢?我們不妨先拋掉容器這兩個字,先來談談適配器,適配器是軟件設計之中的一種概念,即基于原有的接口設計適配出用戶想要的接口,是一種設計模式,適配器這種設計模式提升了代碼復用性以及系統擴展性,降低了代碼的耦合度,是一種優秀的設計模式。那么對于容器適配器來說,就是利用已有的容器進行各種操作封裝出新的類,這就叫容器適配器。

queue的接口

構造函數

explicit queue (const container_type& ctnr = container_type());

一般來說不用給參數,直接調用默認構造就行。

empty

bool empty() const;

隊列的判空。

size

size_type size() const;

返回隊列的元素數。

front

      value_type& front();
const value_type& front() const;

返回隊列的第一個元素。

back

      value_type& back();
const value_type& back() const;

返回隊列的最后一個元素。

queue類的實現

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>#include<deque>using namespace std;namespace jiunian
{template<class T, class container = deque<T>>class queue{public:typedef queue<T, container> Self;//queue()//{//}//queue(Self& x)://	con(x.con)//{//}//~queue()//{//}bool empty() const{return con.empty();}size_t size() const{return con.size();}T& front(){return con.front();}const T& front() const{return con.front();}T& back(){return con.back();}const T& back() const{return con.back();}void push(const T& val){con.push_back(val);}void pop(){con.pop_front();}void swap(Self& x){con.swap(x.con);}Self operator=(Self& x){con = x.con;return *this;}private:container con;};
}

queue作為一個容器適配器,實現起來相比其他容器明顯簡單了不少,因為其作為容器適配器只需要對其他容器的接口進行封裝就行,不需要自己造輪子。實現過程一看就懂,不做過多贅述。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79069.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79069.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79069.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【一】 基本概念與應用領域【數字圖像處理】

考綱 文章目錄 1 概念2005甄題【名詞解釋】2008、2012甄題【名詞解釋】可考題【簡答題】可考題【簡答題】 2 應用領域【了解】2.1 伽馬射線成像【核醫學影像】☆2.2 X射線成像2.3 紫外波段成像2.4 可見光和紅外波段成像2.5 微波波段成像2.6 無線電波段成像2.7 電子顯微鏡成像2…

RAG技術完全指南(一):檢索增強生成原理與LLM對比分析

RAG技術完全指南&#xff08;一&#xff09;&#xff1a;檢索增強生成原理與LLM對比分析 文章目錄 RAG技術完全指南&#xff08;一&#xff09;&#xff1a;檢索增強生成原理與LLM對比分析1. RAG 簡介2. 核心思想3. 工作流程3.1 數據預處理&#xff08;索引構建&#xff09;3.2…

對計網考研中的信道、傳輸時延、傳播時延的理解

對計網考研中的信道、傳輸時延、傳播時延的理解 在學習數據鏈路層流量控制和可靠傳輸那一節的三個協議的最大信道利用率時產生的疑惑 情景&#xff1a; 假如A主機和B主機通過集線器連接&#xff0c;A和集線器是光纖連接&#xff0c;B和集線器也是光纖連接&#xff0c;A給B發…

【2025五一數學建模競賽C題】社交媒體平臺用戶分析問題|建模過程+完整代碼論文全解全析

你是否在尋找數學建模比賽的突破點&#xff1f;數學建模進階思路&#xff01; 作為經驗豐富的美賽O獎、國賽國一的數學建模團隊&#xff0c;我們將為你帶來本次數學建模競賽的全面解析。這個解決方案包不僅包括完整的代碼實現&#xff0c;還有詳盡的建模過程和解析&#xff0c…

使用 Spring Boot Actuator 實現應用實時監控

1. 引言 1.1 什么是 Spring Boot Actuator Spring Boot Actuator 是 Spring Boot 提供的一組生產級功能模塊,用于幫助開發者對 Spring Boot 應用進行監控和管理。它提供了一系列 REST API 端點(Endpoints),可以獲取應用程序的運行狀態、健康檢查、度量指標等信息。 這些…

2025MathorCup數學應用挑戰賽B題

目錄 模型建立與求解 1.問題一的模型建立與求解 1.1 搬遷補償模型設計 1.2 住戶是否搬遷的應對策略與分析 1.3 定量討論 2.問題二的模型建立與求解 2.1 搬遷方案模型的優化介紹 2.2 模型的評估 2.3 模型結果 3.問題三的模型建立與求解 3.1 拐點存在性分析模型的建立 3.2 模型的…

西門子數字化研發設計制造一體化規劃案例P87(87頁PPT)(文末有下載方式)

資料解讀&#xff1a;《西門子數字化研發設計制造一體化規劃案例》 詳細資料請看本解讀文章的最后內容。 該文檔圍繞西門子為企業打造的智能化制造研發工藝生產一體化平臺規劃方案展開&#xff0c;全面闡述了從業務現狀分析到項目實施及案例分享的整個過程。 業務現狀與需求分析…

stm32基礎001(串口)

文章目錄 通信的基本概念串行通信和并行通信單工&#xff0c;半雙工和全雙工串口的硬件連接 stm32的串口原理圖CPU的芯片手冊stm32串口的庫函數實現通過串口實現printf函數使用中斷實現串口的接收 通信的基本概念 串行通信和并行通信 串行通信一個方向只有一個數據通道&#x…

【驗證技能】文檔要求和好文檔注意點

項目文檔 產品場景分析&#xff1b; 產品規格需求&#xff1a;OR&#xff1b; 項目設計需求&#xff1a;DR&#xff1b; 業務文檔&#xff1a;學發材料&#xff1b; 計劃 項目執行計劃&#xff0c;設計計劃&#xff0c;驗證計劃&#xff0c;一~四級計劃&#xff1b; 一級計…

使用 CarrierWave 通過 AWS S3上傳文件到阿里云 OSS

雖然阿里云 OSS 與 AWS S3 兼容&#xff0c;但需要使用阿里云的特定端點進行配置。CarrierWave 是一個流行的 Ruby 文件上傳庫&#xff0c;可以方便地與 AWS S3 集成。以下是配置和使用方法&#xff1a; 1. 安裝必要的 gem 首先&#xff0c;在 Gemfile 中添加以下 gem&#x…

上位機知識篇---流水線執行

文章目錄 前言前言 本文簡單介紹了流水線. 基本概念 流水線(Pipeline) 是一種通過將任務分解為多個子任務(階段),并讓不同子任務并行執行以提高效率的技術。其靈感來源于工業流水線,每個階段專注于特定操作,多任務在不同階段重疊執行,從而提升整體吞吐率(Throughput)…

第三部分:賦予網頁靈魂 —— JavaScript(下)

目錄 7 DOM 操作&#xff1a;控制網頁的"智能面板7.1 小例子&#xff1a;點擊按鈕時改變段落文字&#xff0c;根據用戶輸入改變圖片7.2 練習&#xff1a;實現一個簡單的 Tab 切換效果 8 事件處理&#xff1a;響應用戶的"指令"8.1 小例子&#xff1a;實現點擊按鈕…

芯片軟錯誤概率探究:基于汽車芯片安全設計視角

摘要&#xff1a; 本文深入剖析了芯片軟錯誤概率問題&#xff0c;結合 AEC-Q100 與 IEC61508 標準&#xff0c;以 130 納米工藝 1Mbit RAM 芯片為例闡述其軟錯誤概率&#xff0c;探討汽車芯片安全等級劃分及軟錯誤對汽車關鍵系統的影響&#xff0c;分析先進工藝下軟錯誤變化趨勢…

嵌入式AI還是一片藍海

發現其實還是挺多人關注嵌入式和人工智能交叉領域的&#xff0c;隨便一個問題&#xff0c;瀏覽量就27萬了&#xff0c;但是這方面的內容確實少得可憐……所以干脆我自己來補點干貨。 推薦一本最近很熱門的新書——《邊緣人工智能&#xff1a;用嵌入式機器學習解決現實問題》。 …

Linux 怎么安裝 Oracle Java 8

在 Linux 系統上安裝 Oracle Java 8 的步驟如下&#xff1a; 1. 下載 Oracle Java 8 訪問 Oracle 官方網站的 Java 下載頁面&#xff1a; 下載鏈接&#xff1a;Oracle Java 8 下載頁面選擇適合 Linux x64 的安裝包&#xff08;通常是 .tar.gz 格式&#xff09;。需要登錄 Or…

nginx配置集群服務器中的tcp負載均衡器

文章目錄 前言1. Ubuntu下nginx安裝2. nginx的tcp負載配置 前言 假設一臺機器支持兩萬的并發量&#xff0c;現在我們需要保證八萬的并發量。首先想到的是升級服務器的配置&#xff0c;比如提高 CPU 執行頻率&#xff0c;加大內存等提高機器的物理性能來解決此問題。但是單臺機…

【音視頻】RTMP流媒體服務器搭建、推流拉流

服務器&#xff1a;SRS(Simple RTMP Server&#xff0c;?持RTMP、HTTP-FLV&#xff0c;HLS) 推流端&#xff1a;ffmpeg OBS 拉流端&#xff1a;ffplay VLC srs播放器 1 安裝和測試srs流媒體服務器 1.1 安裝srs流媒體服務器 srs官?&#xff1a;https://github.com/ossrs/…

數據治理與數據管理:定義之辯和責任外包的邊界

數據治理與數據管理&#xff1a;定義之辯和責任外包的邊界 最近&#xff0c;在數據領域的技術交流中&#xff0c;一位朋友探討了兩個很有意思的問題。這兩個問題非常典型&#xff0c;也反映了大家在實際工作和學習中常會遇到的困惑&#xff1a;一是關于“數據管理”和“數據治…

Linux 命令如何同時支持文件參數與管道輸入?

文章目錄 Linux 命令如何同時支持文件參數與管道輸入&#xff1f;命令輸入方式與管道機制概述常見輸入控制方式常見使用示例程序實現思路&#xff1a;統一處理輸入的方式判定輸入來源的基本模式為何命令應支持參數與標準輸入&#xff1f; GNU Coreutils wc 源碼解析&#xff1a…

flutter開發音樂APP(簡單的音樂播放demo)

效果如下&#xff1a; 音樂播放界面 鎖屏音樂播放展示 主要使用的插件如下 just_audio : 是一個功能豐富的音頻播放器&#xff0c;適用于Android、iOS、macOS、Web、Linux和Windows平臺。它提供了多種功能&#xff0c;包括從URL、文件、資產或字節流讀取音頻&#xff0c;支持D…