【c++】 STL的組件簡介與容器的使用時機

STL六大組件簡介

STL提供了六大組件,彼此之間可以組合套用,這六大組件分別是:容器算法迭代器仿函數適配器(配接器)空間配置器

  • 容器:各種數據結構,如vector、list、deque、set、map等,用來存放數據,從實現角度來看,STL容器是一種class template。
  • 算法:各種常用的算法,如sort、find、copy、for_each。從實現的角度來看,STL算法是一種function tempalte.
  • 迭代器:扮演了容器與算法之間的膠合劑,共有五種類型,從實現角度來看,迭代器是一種將operator* , operator-> , operator++,operator–等指針相關操作予以重載的class template. 所有STL容器都附帶有自己專屬的迭代器,只有容器的設計者才知道如何遍歷自己的元素。原生指針(native pointer)也是一種迭代器。
  • 仿函數:行為類似函數,可作為算法的某種策略。從實現角度來看,仿函數是一種重載了operator()的class 或者class template
  • 適配器:一種用來修飾容器或者仿函數或迭代器接口的東西。
  • 空間配置器:負責空間的配置與管理。從實現角度看,配置器是一個實現了動態空間配置、空間管理、空間釋放的class tempalte.
  • STL六大組件的交互關系,容器通過空間配置器取得數據存儲空間,算法通過迭代器存儲容器中的內容,仿函數可以協助算法完成不同的策略的變化,適配器可以修飾仿函數。

STL的優點:

  • STL 是 C++的一部分,因此不用額外安裝什么,它被內建在你的編譯器之內。
  • STL 的一個重要特性是將數據和操作分離。數據由容器類別加以管理,操作則由可定制的算法定義。迭代器在兩者之間充當“粘合劑”,以使算法可以和容器交互運作
  • 程序員可以不用思考 STL 具體的實現過程,只要能夠熟練使用 STL 就 OK 了。這樣他們就可以把精力放在程序開發的別的方面。
  • STL 具有高可重用性,高性能,高移植性,跨平臺的優點。
  • 高可重用性:STL 中幾乎所有的代碼都采用了模板類和模版函數的方式實現,這相比于傳統的由函數和類組成的庫來說提供了更好的代碼重用機會。
  • 高性能:如 map 可以高效地從十萬條記錄里面查找出指定的記錄,因為 map 是采用紅黑樹的變體實現的。
  • 高移植性:如在項目 A 上用 STL 編寫的模塊,可以直接移植到項目 B 上。

三、STL容器使用時機

四、STL容器的基本操作與接口?

string容器的基本操作與接口?

vector容器的操作與接口

deque容器的基本操作與接口

stact&queue棧和隊列的基本操作與接口

list容器的基本操作與接口

仿函數的概念詳解與基礎實現???????

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

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

相關文章

微信云開發-- Mac安裝 wx-server-sdk依賴

第一次上傳部署云函數時,會提示安裝依賴wx-server-sdk 一. 判斷是否安裝wx-server-sdk依賴 先創建一個云函數,然后檢查云函數目錄。 如果云函數目錄下只顯示如下圖所示三個文件,說明未安裝依賴。 如果云函數目錄下顯示如下圖所示四個文件&a…

EdgeX Foundry 邊緣物聯網中間件平臺

文章目錄 1.EdgeX Foundry2.平臺架構3.平臺服務3.1.設備服務3.2.核心服務3.3.支持服務3.4.應用服務3.5.安全服務3.6.管理服務 EdgeX Foundry # EdgeX Foundryhttps://iothub.org.cn/docs/edgex/ https://iothub.org.cn/docs/edgex/edgex-foundry/1.EdgeX Foundry EdgeX Found…

Linux下設置網關以及網絡相關命令

在Linux下設置網關以及進行網絡相關的操作,通常需要使用一系列的命令。以下是一些常用的命令和步驟: 查看網絡接口信息 ifconfig:用于查看網絡接口的狀態和配置信息(已淘汰)。ip link:顯示本地的鏈路層設…

嵌入式 Linux 下的 LVGL 移植

目錄 準備創建工程修改配置修改 lv_drv_conf.h修改 lv_conf.h修改 main.c修改 Makefile 編譯運行更多內容 LVGL(Light and Versatile Graphics Library)是一個輕量化的、開源的、在嵌入式系統中廣泛使用的圖形庫,它提供了一套豐富的控件和組件…

ConfigurableBeanFactory學習

簡介 ConfigurableBeanFactory定義BeanFactory的配置。ConfigurableBeanFactory中定義了太多太多的api,比如類加載器,類型轉化,屬性編輯器,BeanPostProcessor,作用域,bean定義,處理bean依賴關系,合并其他ConfigurableBeanFactory,bean如何銷毀。ConfigurableBeanFactory同時繼…

微軟為金融界帶來革命性突破——推出Microsoft 365中的下一代AI助手:Microsoft Copilot for Finance

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

雷龍CS SD NAND(貼片式TF卡)測評體驗

前段時間有幸免費得到了雷龍出品的貼片式的TF卡的芯片及轉接板,兩片貼片式nand芯片+一個轉接板,一種一個已讓官方焊接完好;如下圖所示: 正面: 背面: 通過轉接板,可以將CS SD NAND(貼…

數電實驗之流水燈、序列發生器

最近又用到了數電實驗設計的一些操作和設計思想,遂整理之。 廣告流水燈 實驗內容 用觸發器、組合函數器件和門電路設計一個廣告流水燈,該流水燈由 8 個 LED 組成,工作時始終為 1 暗 7 亮,且這一個暗燈循環右移。 1) 寫出設計過…

關于DisableIEToEdge插件閃退問題的解決方案

關于DisableIEToEdge插件閃退問題.今天終于測試找到最佳解決方案了! 1.管理員權限運行Windows powershell. 2.執行一下兩條命令修復系統環境 DISM.exe /Online /Cleanup-image /Restorehealth sfc /scannow 3.關閉Windows安全中心的所有安全選項。 4.管理員權限運行…

【計算機考研擇校】四川大學vs電子科技大學哪個難度更大?

川大在文科,經管方面比科大強,醫學在國內都很強。但工科方面特別是電子信息領域明顯是科大強于川大。畢竟一個是綜合大學,一個是工科大學不可同日而語。 就業上,電子科大在IT領域的社會聲譽口碑不錯。就業一向都很好。這個多問問…

.datastore@cyberfear.com.mkp勒索病毒的最新威脅:如何恢復您的數據?

導言: 我們享受著數字化帶來的便利,但同時也要面對不斷演進的網絡威脅。最近出現的 .datastorecyberfear.com.mkp、[hendersoncock.li].mkp [hudsonLcock.li]、.mkp [myersairmail.cc].mkp 勒索病毒就是其中之一,它對我們的數據安全構成了…

張俊將出席用磁懸浮技術改變生活演講

演講嘉賓:張俊 空壓機銷售總監 億昇(天津)科技有限公司 演講題目:用磁懸浮技術改變生活 會議簡介 “十四五”規劃中提出,提高工業、能源領城智能化與信息化融合,明確“低碳經濟”新的戰略目標,熱能產業是能源產業和…

Python環境下一種改進的基于梯度下降的自適應短時傅里葉變換

在數字信號處理技術中,傅里葉變換及其逆變換是一種信號時頻分析方法。該方法將信號的時域描述及頻域描述聯系在一起,時域信號可通過正變換轉變為頻域信號,頻域信號可通過逆變換轉變為時域信號進行分析。但傅里葉變換及其逆變換是一種信號的整…

Linux/Centos 部署靜態IP,解決無法訪問目標主機、Destination Host Unreachable、無法ping通互聯網的問題

Linux/Centos 部署IP,解決無法訪問目標主機、Destination Host Unreachable、無法ping通互聯網的問題 Linux/Centos 部署靜態IP查物理機/自身電腦的IP設置VMware上的虛擬網絡編輯器設置網卡IP,激活至此就可訪問百度了 Linux/Centos 部署靜態IP 需要注意…

軟考基礎知識2

1.DMA控制方式:直接內存存取。數據在內存與I/O設備間直接成塊傳送,不需要CPU的任何干涉,由DMA硬件直接執行完成。 例題: 2.程序計數器總是存下一個指令的地址。 例題: 3.可靠度的計算: 例題&#xff1a…

吸貓毛空氣凈化器哪個好?推薦除貓毛效果好寵物空氣凈化器品牌

當下有越來越多的家庭選擇養寵物!盡管家里變得更加溫馨,但養寵可能會帶來異味和空氣中的毛發增多可能會帶來健康問題,這是一個大問題! 不想家里彌漫著異味,特別是來自寵物便便的味道,所以需要一款能夠處理…

大語言模型LLM Pro+中Pro+(Prompting)的意義

—— Pro ,即Prompting,構造提示 1.LLM Pro中Pro(Prompting)的意義 Prompting不僅是大語言模型交互和調用的一種高效手段,而且已成為推動模型泛化能力和應用靈活性的關鍵技術路徑,它不僅極大地拓展了模型功…

ABAP - SALV教程02 - 開篇:打開SALV的三種方式之二

全屏模式生成SALV的方式:http://t.csdnimg.cn/CzNLz本文講解生成可控模式的SALV,該方式需要依賴自己創建屏幕的自定義控件區域(Custom Control)實現步驟:需要注意的點是SALV的實例對象和dispaly方法一定是在屏幕PBO事件…

利用IP地址識別風險用戶:保護網絡安全的重要手段

隨著互聯網的發展和普及,網絡安全問題日益突出,各種網絡詐騙、惡意攻擊等風險不斷涌現,給個人和企業的財產安全和信息安全帶來了嚴重威脅。在這樣的背景下,利用IP地址識別風險用戶成為了保護網絡安全的重要手段之一。IP數據云探討…

Qt常用的多線程使用方式

目前(Qt5)常用的多線程的方式? 1、派生于QThread然后重寫run()函數 2、通過將派生QObject的類對象通過moveToThread()來移動到新的線程中 3、通過inherit QRunnable類然后重寫run()方法、然后借助QThreadPool線程池來實現多線程 4、通過高級語法 QtConcurrent模塊來…