關于vector、queue、list哪邊是front、哪邊是back,增加、刪除元素操作

容器的 front、back 及操作方向

1.1vector(動態數組)

結構:連續內存塊,支持快速隨機訪問。
操作方向:
front:第一個元素(索引 0)。
back:最后一個元素(索引 size() - 1)。
push_back():在尾部插入元素。
pop_back():從尾部刪除元素。
不支持頭部操作(如 push_front() 或 pop_front())。

#include <vector>
vector<int> v = {10, 20, 30};v.push_back(40);  // 尾部插入 → [10,20,30,40]
v.pop_back();     // 尾部刪除 → [10,20,30]/*圖示如下入隊方向 →→→→→→→→→→
front → [10][20][30] ← back↑     ↑push_back/pop_back出隊方向←←←←←←←←←←←
*/

1.2queue(隊列,FIFO)

結構:默認基于 deque 實現的容器適配器,嚴格遵循先進先出。
操作方向:
front:隊列頭部(最早插入的元素)。
back:隊列尾部(最新插入的元素)。
push():在尾部插入元素。
pop():從頭部刪除元素。

#include <queue>
queue<int> q;q.push(10);  // 隊列 → [10]
q.push(20);  // 隊列 → [10,20]
q.pop();     // 刪除頭部 → [20]
/*圖示如下入隊方向 →→→→→→→→→→[10][20][30][40][50]↑               ↑front           back
出隊方向 →→→→→→→→→→
*/

1.3list(雙向鏈表)

結構:由雙向鏈表節點構成,每個節點包含前后指針。
操作方向:
front:鏈表頭部(第一個節點)。
back:鏈表尾部(最后一個節點)。
push_front():在頭部插入元素。
push_back():在尾部插入元素。
pop_front():刪除頭部元素。
pop_back():刪除尾部元素。

#include <list>
list<int> lst = {20, 30};lst.push_front(10);  // 頭部插入 → [10,20,30]
lst.push_back(40);   // 尾部插入 → [10,20,30,40]
lst.pop_front();     // 刪除頭部 → [20,30,40]
lst.pop_back();      // 刪除尾部 → [20,30]
/*圖示如下
front → [10] <-> [20] <-> [30] ← back↑                     ↑push_front/pop_front  push_back/pop_back
*/

堆(Heap)和棧(Stack)的底層實現

2.1 內存中的堆和棧

  • 堆(Heap):動態分配的內存區域,由程序員手動管理(new/malloc)。
    底層實現:由操作系統內存管理器通過復雜數據結構(如空閑鏈表、內存池)管理,與容器無關。
  • 棧(Stack):函數調用時的自動內存區域,存儲局部變量和函數參數。
    底層實現:由編譯器通過調整棧指針(SP)直接管理,內存分配高效且嚴格遵循LIFO。

2.2 數據結構中的堆和棧

  • 棧(Stack容器):后進先出(LIFO)的容器適配器。
    底層實現:默認基于 deque,也可用 vector 或 list。
  • 堆(優先隊列,Priority Queue):元素按優先級出隊(通常用堆數據結構實現)。
    底層實現:默認基于 vector 的二叉堆(完全二叉樹)。

關鍵結論:

  • 堆(內存)和棧(內存) 是操作系統管理的內存區域,不與容器直接關聯。
  • 棧容器(LIFO) 默認基于 deque,優先隊列(堆) 默認基于 vector 的二叉堆實現。

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

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

相關文章

嵌入式之匯編程序示例

目錄 經典例子:求階乘 一:數組求和 二:數據壓棧退棧 三:函數嵌套調用 經典例子:求階乘 知識點: BGT 用于判斷 r2 > r0&#xff0c;確保循環執行 恰好 r0 次。BNE 用于判斷 r2 ≠ r0&#xff0c;會導致循環多執行一次&#xff0c;得到錯誤結果。 這就是階乘代碼中必須…

【MySQL】第九彈——索引(下)

文章目錄 &#x1f30f;索引(上)回顧&#x1f30f;使用索引&#x1fa90;自動創建索引&#x1fa90;手動創建索引&#x1f680;主鍵索引&#x1f680;普通索引&#x1f680;唯一索引&#x1f680;復合索引 &#x1fa90;查看索引&#x1fa90;刪除索引&#x1f680;刪除主鍵索引…

畢業論文格式(Word)

目錄 Word目錄怎么自動生成&#xff1f;快速生成試試這3個方法&#xff01; - 知乎https://zhuanlan.zhihu.com/p/692056836目錄生成需要先設置標題樣式&#xff0c;這個不僅是目錄生成需要&#xff0c;和后續的圖表也有關系。 最好不要自己創建新的樣式&#xff0c;而是在現有…

PostGIS實現柵格數據轉二進制應用實踐【ST_AsBinary】

ST_AsBinary解析與應用實踐&#xff08;同ST_AsWKB&#xff09; 一、函數概述二、核心參數解析三、典型用法示例四、Out-DB 波段處理機制五、二進制格式與其他格式的轉換六、性能與存儲優化七、應用場景八、注意事項九、擴展應用&#xff1a;基于Python Web的柵格二進制數據的…

線性回歸原理推導與應用(七):邏輯回歸原理與公式推導

邏輯回歸是一種分類算法&#xff0c;常用于二分類&#xff0c;也就是得出的結果為是和不是&#xff0c;例如通過各種因素判斷一個人是否生病&#xff0c;信用卡是否違約等。邏輯回歸在社會和自然科學中應用非常廣泛&#xff0c; 前置知識 線性回歸 邏輯回歸的底層方法就是線…

Fastrace:Rust 中分布式追蹤的現代化方案

原文鏈接&#xff1a;Fastrace: A Modern Approach to Distributed Tracing in Rust | FastLabs / Blog 摘要 在微服務架構中&#xff0c;分布式追蹤對于理解應用程序的行為至關重要。雖然 tokio-rs/tracing 在 Rust 中被廣泛使用&#xff0c;但它存在一些顯著的挑戰&#xf…

水果系列數據集- 葡萄grapes>> DataBall

該數據集可以用于目標檢測&#xff0c;水果分類 &#xff0c;文生圖相關項目。 以下是圖片樣例&#xff1a;

HTTP協議接口三種測試方法之-postman

HTTP協議作為現代Web開發的基石&#xff0c;其接口測試是開發過程中不可或缺的環節。Postman作為最流行的API測試工具之一&#xff0c;能夠極大提升我們的測試效率。本文將詳細介紹如何使用Postman進行HTTP接口測試。 一、HTTP協議基礎回顧 在開始使用Postman之前&#xff0c…

佰力博科技與您探討半導體電阻測試常用的一些方法

一、兩探針法? 兩探針法是一種較為基礎的測試方法。該方法將兩根探針與半導體樣品表面緊密接觸&#xff0c;通過電源在兩根探針之間施加電壓&#xff0c;同時使用電流表測量通過樣品的電流&#xff0c;再根據歐姆定律計算電阻。?這種方法的優點在于操作簡單、設備要求較低&a…

機器學習的一些基本概念

看了b站一個清華博士的視頻做的筆記&#xff0c;對于人工智能的底層原理&#xff0c;訓練方式&#xff0c;以及生成式文本輸出&#xff0c;圖片生成的底層原理有了一個了解&#xff0c;算是一個還不錯的科普文。之前一直想要了解一下機器學習的入門原理&#xff0c;神經網絡相關…

Python爬蟲實戰:研究Grab 框架相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網的快速發展,網絡上的數據量呈爆炸式增長。如何高效地獲取和利用這些數據成為了當前的研究熱點。網絡爬蟲作為一種自動獲取網頁內容的技術,能夠按照一定的規則,自動地抓取萬維網信息,在搜索引擎、數據挖掘、信息整合等領域有著廣泛的…

uniapp 嵌入鴻蒙原生組件 具體步驟

關于怎么使用uniapp 嵌入鴻蒙原生組件 HBuilder X 版本 4.64 app-harmony文件下新建 index.uts button.ets button.ets里面復制uniapp 官方提供的 示例代碼 https://uniapp.dcloud.net.cn/tutorial/harmony/native-component.html button.ets import { NativeEmbedBuilderO…

阿里云 OS Copilot 使用指南

安裝&#xff1a; AlibabaCloudLinux: sudo yum install -y os-copilotUbuntu&#xff1a; curl -#S https://mirrors.aliyun.com/os-copilot/os-copilot-all-in-one-latest.sh | bash添加RAM用戶 打開 https://ram.console.aliyun.com/users 復制AccessKey&#xff0c;Ac…

枚舉類擴充處理

問題背景 由于 Java 不允許枚舉繼承另一個枚舉&#xff08;enum cannot extend enum&#xff09;&#xff0c;但可以通過 組合方式 或 工具類 來實現類似功能。 ? 解決方案一&#xff1a;組合方式引入原始枚舉值 示例代碼&#xff1a; public enum CustomErrorCodeEnum imp…

Spring Security探索與應用

Spring Security核心概念 框架定位與核心能力 Spring Security是Spring生態中實現應用級安全的核心框架,其官方定義為"強大且高度可定制的認證與訪問控制框架"。作為Spring應用程序安全防護的事實標準解決方案,它通過模塊化設計提供以下核心能力: 認證(Authenti…

藍橋杯國14 不完整的算式

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;理清思路 然后一步步寫 問題描述 小藍在黑板上寫了一個形如 AopBC 的算式&#x…

掃描電鏡:打開微觀世界的“超維相機“

當你用手機拍攝一朵花的微距照片時&#xff0c;放大100倍已足夠驚艷。但如果告訴你&#xff0c;科學家手中的"相機"能將物體放大百萬倍&#xff0c;連病毒表面的蛋白突觸都清晰可見&#xff0c;你是否會好奇這背后的黑科技&#xff1f;這把打開微觀宇宙的鑰匙&#x…

JVM學習(四)--對象內存布局

目錄 一、對象內存布局 1、對象的實例化 1.1、你有幾種方式創建對象&#xff1f; 1.2、創建對象的步驟 1.2.1、從字節碼角度看待對象創建過程 1.2.2、從執行步驟角度分析 2、對象的內存布局 2.1、對象頭 2.2、實例數據 2.3、對齊填充 3、對象的訪問定位 3.1、句柄訪…

SQL每日一題(4)

前言&#xff1a;第四更 雖然已經全部做完了&#xff0c;這套卷子非常推薦&#xff01; 根據題目還原出來的原始表 employees表 idnameagestatus1張三28在崗2李四35在崗3王五42在崗4趙六NULL在崗5錢七58在崗6孫八24在崗7周九31離職8吳十-5在崗9鄭十一45在崗10王十二52在崗 題…

如何做好一份技術文檔?

文章目錄 前言一、技術文檔的核心原則二、技術文檔的類型與場景三、技術文檔的寫作流程3.1 需求分析階段&#xff08;文檔生產的基礎&#xff09;3.2 架構設計階段&#xff08;文檔的骨架搭建&#xff09;3.3 內容開發階段&#xff08;血肉填充&#xff09;3.4 質量保障階段&am…