c加加學習之day06->STL標準庫->day01

1.介紹:C++ 標準模板庫(Standard Template Library,簡稱 STL)是一組泛型編程的模板類和函數,旨在提供常用的數據結構、算法和函數對象。STL 是 C++ 標準庫的一部分,極大地提高了編程效率和代碼的可重用性。STL 主要分為6個部分。

STL 的設計基于泛型編程的思想,通過使用模板,STL 提供了與類型無關的代碼,從而實現了代碼的高復用性和靈活性

---------------------------------------------------順序容器-----------------------------------------------------------

1.順序容器(Sequence Containers)是一類用于存儲和管理具有順序關系的元素的容器。這些容器允許在容器中的任意位置插入和刪除元素,并且可以通過迭代器訪問元素。C++ STL中的順序容器主要包括以下幾種

2.1. std::vector

2. std::deque (雙端隊列)

3. std::list (雙向鏈表)

4. std::forward_list (單向鏈表):

特性 :單向鏈表,支持在任何位置快速插入和刪除元素。優點 :在任何位置插入和刪除元素效率高(O(1)時間復雜度),內存占用較少。

缺點 :不支持隨機訪問,訪問元素需要從頭節點開始遍歷(O(n)時間復雜度)。不支持反向遍歷。

5. std::array (C++11引入):

特性 :固定大小的數組,大小在編譯時確定,不支持動態調整大小。

優點 :支持隨機訪問,訪問速度快(O(1)時間復雜度)。性能通常優于 std::vector ,因為不需要動態內存分配。

缺點 :大小固定,不能動態調整。

------------------------------------------------------順序容器--------------------------------------------------

一.順序容器:順序容器(Sequence Containers)是一類用于存儲和管理具有順序關系的元素的容器。這些容器允許在容器中的任意位置插入和刪除元素,并且可以通過迭代器訪問元素。C++ STL中的順序容器主要包括以下幾種:

1.std::vector(動態數組)

2.std::deque(雙端隊列)

3.std::list(雙向鏈表):

特性 :單向鏈表,支持在任何位置快速插入和刪除元素。優點 :在任何位置插入和刪除元素效率高(O(1)時間復雜度),內存占用較少。

缺點 :不支持隨機訪問,訪問元素需要從頭節點開始遍歷(O(n)時間復雜度)。不支持反向遍歷

學習網站:vector 類 | Microsoft Learn

二。VECTOR

補充:

雙端隊列:

3.list雙向鏈表

------------------------------------------------------容器適配器------------------------------------------------------------

1.introduce:

適配器(Adaptors)是標準庫中的一個通用概念, 容器、迭代器和函數都有適配器 。

C++中的 適配器是一種設計模式 , 用于將一個類或對象的接口轉換為另一個接口,以便不同的類或對象可以相互協作 。適配器模式可以分為類適配器和對象適配器兩種形式。

類適配器通過繼承源類并實現目標接口來實現適配。在類適配器中,適配器類同時繼承自源類和目標接口,并重

新實現目標接口的方法,以將源類的方法轉換為目標接口的方法。

對象適配器則通過在適配器類中包裝一個源對象來實現適配。在對象適配器中,適配器類持有一個源對象的引用,并實現目標接口的方法,在方法內部調用源對象的相應方法來完成適配。

標準庫定義了三個序列容器適配器: stack,queue,priority_queue

1.queue:是一個隊列 先進先出

queue不是標準的STL容器,卻以標準的STL容器為基礎。queue是在deque的基礎上封裝的
之所以選擇deque而不選擇vector是因為deque在刪除元素的時候釋放空間,同時在重新申請空間的時候無需拷貝所有元素

2.stack

stack是一個棧 , 實現先進后出功能 ,

stack不是標準的STL容器,卻以標準的STL容器為基礎。stack是在deque的基礎上封裝的。

3.priority_queue

優先級隊列:優先級大的先出隊,底層數據結構默認是大根堆(完全二叉樹)。

優先級隊列底層默認把數據組成一個大根堆結構 ,而大根堆的構建就需要在一個內存連續的數組上(堆中結點和它左右孩子的關系是通過下標計算的), vector動態數組底層是絕對連續的,而deque是分段連續的,所以用vector

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

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

相關文章

onnx注冊cpu版flashattention

摘要 本教程展示了如何在 ONNX Runtime 中注冊一個 CPU 可執行的 FlashAttention 算子。首先,可以直接升級到 ONNX Runtime v1.16 及以上,以獲得內置的 FlashAttention CPU 實現citeturn0search2;其次,演示了如何通過 ONNX Runtime 的 Custom Op 接口自定義實現并注…

3D高斯個人筆記

入門blog,參考視頻1和參考視頻2 球諧函數 通俗介紹或通俗介紹,3D高斯就是利用球諧函數(SH函數)作為基函數,去求取三維空間中不同點的顏色。 SH函數作為基函數通常是表示不同角度下的距離,即三維球面點半徑&#xff…

電子處方模塊開發避坑指南:從互聯網醫院系統源碼實踐出發

今天,筆者將結合互聯網醫院系統源碼實踐,從技術架構、合規策略、業務流程到性能優化,為大家梳理一份電子處方模塊開發避坑指南,助力各類醫療平臺高效落地電子處方功能。 一、為何電子處方模塊是互聯網醫院的“重災區”&#xff1…

【RabbitMQ | 第2篇】RabbitMQ 控制臺實現消息路由 + 數據隔離

文章目錄 同步調用和異步調用MQRabbitMQ1. RabbitMQ控制臺實現交換機路由到隊列1.1 創建隊列1.2 將消息發送給交換機,是否會到達隊列 2. RabbitMQ控制臺實現數據隔離2.1 添加一個用戶2.2 創建新的虛擬主機 同步調用和異步調用 同步調用是指完成一個功能&#xff0c…

kubernetes》》k8s》》Heml

Heml 下載地址 安裝 curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash# helm 添加 倉庫 # helm repo add 倉庫名稱 倉庫地址 helm repo add stable http://mirror.azure.cn/kubernetes/charts/# 查看helm 倉庫列表 helm repo list # 結…

【專題刷題】二分查找(一):深度解刨二分思想和二分模板

📝前言說明: 本專欄主要記錄本人的基礎算法學習以及LeetCode刷題記錄,按專題劃分每題主要記錄:(1)本人解法 本人屎山代碼;(2)優質解法 優質代碼;&#xff…

鄉村治理數字化平臺:信息技術賦能鄉村振興的深度探索

在信息化技術飛速發展的背景下,數字化轉型已成為推動社會進步和治理現代化的關鍵力量。鄉村治理數字化平臺,作為信息技術在鄉村治理領域的深度應用,正逐步成為提升鄉村治理效能、推動鄉村振興的重要工具。本文將深入探討鄉村治理數字化平臺的…

PyQt6基礎_QTabWidget

目錄 代碼 運行 官方文檔 PySide6.QtWidgets.QTabWidget - Qt for Python 代碼 class TempWidget(QWidget):def __init__(self):super().__init__()self.tabs QTabWidget()self.tabs.tabBarClicked.connect(self.tabs_tabBarClicked)widget_tab1 QWidget()widget_tab2…

springboot在eclipse里面運行 run as 是Java Application還是 Maven

在 Eclipse 里運行 Spring Boot 項目時,既可以選擇以“Java Application”方式運行,也可以通過 Maven 命令來運行,下面為你詳細介紹這兩種方式及適用場景。 以“Java Application”方式運行 操作步驟 在項目中找到帶有 SpringBootApplicat…

怎樣記憶Precision、Recall?

首先,明確符號: TP(True Posive):標簽為正,預測為正 TN(True Negative):標簽為負,預測為負 FP(False Positive):標簽為負,預測為正 FN(False Negative):標簽為正&#xf…

【C語言】C語言動態內存管理

前言 在C語言編程中,內存管理一直是程序員需要重點關注的領域。動態內存管理更是如此,它不僅涉及到內存的靈活分配和釋放,還隱藏著許多潛在的陷阱。本文將從動態內存分配的基礎講起,逐步深入到常見的錯誤、經典筆試題分析&#x…

expres路由模塊化

Express 路由模塊化是實際開發中非常重要的一部分,可以讓你的項目結構更清晰、維護更方便。 🧱 一、為什么要模塊化? 隨著項目變大,如果所有路由都寫在 app.js 中,會很亂。使用模塊化后可以: 功能解耦&a…

C語言——填充矩陣

C語言——填充矩陣 一、問題描述二、格式要求1.輸入形式2.輸出形式3.樣例 三、實驗代碼 一、問題描述 編程實現自動填充nn矩陣元素數值,填充規則為:從第一行最后一列矩陣元素開始按逆時針方向螺旋式填充數值1,2,…,nn…

零基礎上手Python數據分析 (22)案例實戰]之利用 Matplotlib Seaborn 進行電商銷售數據可視化分析

寫在前面 —— 圖表為刃,洞察先行!綜合運用 Pandas、Matplotlib 與 Seaborn,點亮數據價值 本篇通過一個完整的案例實戰,體驗如何將數據分析與數據可視化緊密結合,讓冰冷的數據轉化為生動、直觀、富有洞察力的視覺故事! 案例目標: 本篇博客將延續我們在第 17 篇案例中…

Java開發經驗總結

只要刪繁、捋清脈絡,才能掌握本質!只有創新才有價值,保持創新、保持學習! 計劃:UNIAPPSPRINGBOOT學習、SPRINGBOOTVUE新版學習、頁面展示學習、PYTHON。 ***********************************************************…

深入解析:RocketMQ、RabbitMQ和Kafka的區別與使用場景

互聯網大廠Java求職者面試:RocketMQ、RabbitMQ和Kafka的深入解析 故事場景:嚴肅且專業的面試官與架構師程序員馬架構 在一家知名的互聯網大廠,Java求職者正在接受一場嚴格的面試。面試官是一位經驗豐富的技術專家,他將通過多輪提…

使用vue2開發一個醫療預約掛號平臺-前端靜態網站項目練習

對于后端開發的我,最近一直在學習前端開發,除了要學習一些前端的基礎知識外,肯定少不了一些前端項目練習,就通過前端的編程知識 就簡單做一個醫療預約掛號前端靜態頁面。這個網站主要是使用了vue2 的相關技術實現的。 主要實現了這…

MongoDB(docker版)備份還原

docker啟動MongoDB docker run -d -p 27017:27017 --name my-mongo -v /mongodb/db:/data/db mongo備份MongoDB 使用mongodump備份數據庫時,默認會將備份數據保存在當前工作目錄下的dump文件夾中。 docker容器中默認備份在當前工作目錄,所以此處指定當…

zkPass案例實戰之合約篇

目錄 一、contracts/contracts/ProofVerifier.sol 1. License 和 Solidity 版本 2. 導入依賴 3. 合約聲明和默認分配器地址 4. 驗證證明 5. 驗證分配器簽名 6. 驗證驗證者簽名 7. 簽名前綴處理 8. 簽名恢復 總結 二、contracts/contracts/SampleAttestation.sol 1. …

ElasticSearch:高并發場景下如何保證讀寫一致性?

在Elasticsearch高并發場景下,可以通過以下多種方式來保證讀寫一致性: 等待主分片和副本分片都確認(類似半同步機制) 設置consistency參數:在寫操作時,可以設置consistency參數來控制寫操作的一致性級別。…