【c++】【STL】stack詳解

目錄

  • stack類的作用
  • 什么是容器適配器
  • stack的接口
    • 構造函數
    • empty
    • size
    • top
    • push
    • pop
    • swap
    • 關系運算符重載
  • stack類的實現

stack類的作用

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

什么是容器適配器

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

stack的接口

構造函數

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

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

empty

bool empty() const;

棧的判空。

size

size_type size() const;

返回棧的元素數。

top

      value_type& top();
const value_type& top() const;

返回棧頂元素。

push

void push (const value_type& val);

入棧。

pop

void pop();

出棧。

swap


void swap (stack& x) noexcept(/*see below*/);

棧自己的交換函數。

關系運算符重載

template <class T, class Container>bool operator== (const stack<T,Container>& lhs, const stack<T,Container>& rhs);
template <class T, class Container>bool operator!= (const stack<T,Container>& lhs, const stack<T,Container>& rhs);
template <class T, class Container>bool operator<  (const stack<T,Container>& lhs, const stack<T,Container>& rhs);
template <class T, class Container>bool operator<= (const stack<T,Container>& lhs, const stack<T,Container>& rhs);
template <class T, class Container>bool operator>  (const stack<T,Container>& lhs, const stack<T,Container>& rhs);
template <class T, class Container>bool operator>= (const stack<T,Container>& lhs, const stack<T,Container>& rhs);

stack類的實現

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

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

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

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

相關文章

K8s學習與實踐

一、Kubernetes 核心原理 1. Kubernetes 設計哲學 Kubernetes&#xff08;k8s&#xff09;是一個開源的容器編排平臺&#xff0c;旨在自動化容器化應用的部署、擴展和管理。其核心設計圍繞以下目標&#xff1a; 聲明式配置&#xff1a;用戶描述期望狀態&#xff08;如 YAML …

Umi-OCR項目(1)

最近接觸到了一個項目&#xff0c;我在想能不能做出點東西出來。 目標&#xff1a;識別一張帶表格的圖片&#xff0c;要求非表格內容和表格內容都要識別得很好&#xff0c;并且可視化輸出為word文檔。 下面是第一步的測試代碼&#xff0c;測試是否能夠調用ocr能力。 import re…

Mioty|采用報文分割(Telegram Splitting)以提高抗干擾能力的無線通信技術【無線通信小百科】

1、什么是Mioty 在物聯網&#xff08;IoT&#xff09;快速發展的背景下&#xff0c;低功耗廣域網&#xff08;LPWAN&#xff09;技術成為連接海量設備的關鍵。LPWAN具有低功耗、低成本、廣覆蓋和強抗干擾能力等特點&#xff0c;使其特別適用于大規模、遠距離、低數據速率的IoT…

TCP三次握手、四次揮手+多線程并發處理

目錄 一、三次握手建立連接 1.1 標記位 1.2 三次握手的過程 二、四次揮手斷開連接 三、模擬服務器和客戶端收發數據 四、多線程并發處理 五、TCP粘包問題 5.1 什么是TCP粘包&#xff1f; 5.2 TCP粘包會有什么問題&#xff1f; 5.3 TCP粘包的解決方法&#xff1f; 一、三…

使用HunyuanVideo搭建文本生視頻大模型

1.摘要 HunyuanVideo是一個全新的開源視頻基礎模型&#xff0c;其視頻生成性能堪比領先的閉源模型&#xff0c;甚至超越它們。我們采用了多項模型學習的關鍵技術&#xff0c;通過有效的模型架構和數據集擴展策略&#xff0c;我們成功訓練了一個擁有超過 130 億個參數的視頻生成…

LabVIEW圓錐滾子視覺檢測系統

基于LabVIEW平臺的視覺檢測系統提高圓錐滾子內組件的生產質量和效率。通過集成高分辨率攝像頭和先進的圖像處理算法&#xff0c;系統能夠自動識別和分類產品缺陷&#xff0c;從而減少人工檢查需求&#xff0c;提高檢測的準確性和速度。 ?? ? 項目背景 隨著制造業對產品質…

mac 基于Docker安裝minio服務器

在 macOS 上基于 Docker 安裝 MinIO 是一個高效且靈活的方案&#xff0c;尤其適合本地開發或測試環境。以下是詳細的安裝與配置步驟&#xff0c;結合了最佳實踐和常見問題的解決方案&#xff1a; 一、安裝 Docker Desktop 下載安裝包 訪問 Docker 官網&#xff0c;下載適用于 …

EchoMimicV2 部署記錄

在這里插入代碼片# 虛擬環境配置 pip install pip -U pip install torch2.5.1 torchvision0.20.1 torchaudio2.5.1 xformers0.0.28.post3 --index-url https://download.pytorch.org/whl/cu124 pip install torchao --index-url https://download.pytorch.org/whl/nightly/cu1…

數據升降級:醫療數據的“時空穿梭“系統工程(分析與架構篇)

一、核心挑戰與量化分析 1. 版本演化困境的深度解析 (1) 格式斷層的結構化危機 數據轉換黑洞:某醫療信息平臺(2021-2023)統計顯示: 數據類型CDA R1→R2轉換失敗率R2→FHIR轉換失敗率關鍵失敗點診斷記錄28.4%19.7%ICD編碼版本沖突(18.7%)用藥記錄15.2%12.3%劑量單位標準化…

個人開發免費好用

聊一聊 現在輸入法非常多&#xff0c;有時候都不知道哪個更好用。 其實&#xff0c;只有多嘗試&#xff0c;才能找到適合自己的。 今天給大家分享一款輸入法&#xff0c;用起來比較順手&#xff0c;大家可以試試。 軟件介紹 BL輸入法 這是一款綠色純凈&#xff0c;安全放心…

Windows查看和修改IP,IP互相ping通

Windows系統 查看IP地址 winr 輸入cmd 打開終端使用 ipconfig 或 ipconfig -all 命令查看當前網絡 IPV4地址 Windows系統 修改IP地址 自動獲取IP&#xff08;DHCP&#xff09;&#xff1a; 打開 控制面板&#xff0c;點擊 網絡和Internet。點擊 網絡和共享中心。選擇 更改適配…

【IP101】圖像處理基礎:從零開始學習顏色操作(RGB、灰度化、二值化、HSV變換)

&#x1f3a8; 顏色操作詳解 &#x1f31f; 在圖像處理的世界里&#xff0c;顏色操作就像是一個魔術師的基本功。今天&#xff0c;讓我們一起來解鎖這些有趣又實用的"魔法"吧&#xff01; &#x1f4da; 目錄 通道替換 - RGB與BGR的"調包"游戲灰度化 - 讓…

windows系統搭建自己的ftp服務器,保姆級教程(用戶驗證+無驗證)

前言 最近在搭建環境時&#xff0c;我發現每次都需要在網上下載依賴包和軟件&#xff0c;這不僅耗時&#xff0c;而且有時還會遇到網絡不穩定的問題&#xff0c;導致下載速度慢或者中斷&#xff0c;實在不太方便。于是&#xff0c;我產生了搭建一個FTP服務器的想法。通過搭建FT…

藍橋杯 7. 晚會節目單

晚會節目單 原題目鏈接 題目描述 小明要組織一臺晚會&#xff0c;總共準備了 n 個節目。然而晚會時間有限&#xff0c;他只能從中選擇 m 個節目。 這 n 個節目是按照小明設想的順序給定的&#xff0c;順序不能改變。 小明發現觀眾對于晚會的喜歡程度與前幾個節目的好看程度…

JavaScript如何實現類型判斷?

判斷一個數據的類型&#xff0c;常用的方法有以下幾種&#xff1a; typeofinstanceofObject.prototype.toString.call(xxx) 下面來分別分析一下這三種方法各自的優缺點 typeof typeof的本意是用來判斷一個數據的數據類型&#xff0c;所以返回的也是一個數據類型。但是會遇到下…

哈希表筆記(四)Redis對比Java總結

文章目錄 一、基礎結構對比數據結構定義Java HashMapRedis字典 主要區別與設計思路 二、關鍵操作API對比初始化Java HashMapRedis字典 添加元素Java HashMapRedis字典 查找元素Java HashMapRedis字典 刪除元素Java HashMapRedis字典 擴容/重哈希操作Java HashMapRedis字典 三、…

docker拉取國內鏡像

1. 場景 最近整了一個tencent云服務器&#xff0c;想要玩一下docker&#xff0c;結果發現拉不下來&#xff0c;鏡像根本拉不下來。 2. 原因 1.云服務器無法訪問外網&#xff1b; 2. 國內的很多公有鏡像倉庫都被封了&#xff1b; 3. 推薦 https://zhuanlan.zhihu.com/p/713…

Codeforces Round 1008 (Div. 2) C

C 構造 題意&#xff1a;a的數據范圍大&#xff0c;b的數據范圍小&#xff0c;要求所有的a不同&#xff0c;考慮讓丟失的那個a最大即可。問題變成&#xff1a;構造一個最大的a[i] 思路&#xff1a;令a2是最大的,將a1,a3,a5....a2*n1&#xff0c;置為最大的b&#xff0c;將a4,a…

STM32 HAL庫實現USB虛擬串口

1. 引言 在嵌入式系統開發中&#xff0c;USB 虛擬串口是一種非常實用的功能。它允許 STM32 微控制器通過 USB 接口與計算機進行通信&#xff0c;就像使用傳統的串口一樣。這種方式不僅簡化了硬件設計&#xff0c;還提高了通信的靈活性和穩定性。STM32F407 系列微控制器具有強大…

JAVA EE_網絡原理_UDP與TCP

人海中未遇見時&#xff0c;我將獨自前行... ----------陳長生. 1.UDP協議 1.1.UDP協議端格式 UDP&#xff08;用戶數據報協議&#xff09;是由 源端口&#xff0c;目標端口&#xff0c;長度&#xff0c;校驗和&#xff0c;數據 5種結構組成。16位是UDP報文中字段的長度&#…