国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】了解一下STL

這篇具有很好參考價(jià)值的文章主要介紹了【C++】了解一下STL。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

個(gè)人主頁(yè) : zxctscl
如有轉(zhuǎn)載請(qǐng)先通知

1. 什么是STL

STL(standard template libaray-標(biāo)準(zhǔn)模板庫(kù)):是C++標(biāo)準(zhǔn)庫(kù)的重要組成部分,不僅是一個(gè)可復(fù)用的組件庫(kù),而且是一個(gè)包羅數(shù)據(jù)結(jié)構(gòu)與算法的軟件框架。

STL是C++標(biāo)準(zhǔn)庫(kù)的一部分,像之前的iostream也是標(biāo)椎庫(kù)的一部分,不能任務(wù)STL里面包含iostream。它們的關(guān)系是同級(jí)的。
【C++】了解一下STL,開啟C++之路,c++,開發(fā)語(yǔ)言

2. STL的版本

  1. 原始版本
    Alexander Stepanov、Meng Lee 在惠普實(shí)驗(yàn)室完成的原始版本,本著開源精神,他們聲明允許任何人任意運(yùn)用、拷貝、修改、傳播、商業(yè)使用這些代碼,無(wú)需付費(fèi)。唯一的條件就是也需要向原始版本一樣做開源使用。 HP 版本–所有STL實(shí)現(xiàn)版本的始祖。

  2. P. J. 版本
    由P. J. Plauger開發(fā),繼承自HP版本,被Windows Visual C++采用,不能公開或修改,缺陷:可讀性比較低,符號(hào)命名比較怪異。

  3. RW版本
    由Rouge Wage公司開發(fā),繼承自HP版本,被C+ + Builder 采用,不能公開或修改,可讀性一般。

  4. SGI版本
    由Silicon Graphics Computer Systems,Inc公司開發(fā),繼承自HP版 本。被GCC(Linux)采用,可移植性好,可公開、修改甚至販賣,從命名風(fēng)格和編程 風(fēng)格上看,閱讀性非常高。在后面學(xué)習(xí)STL要閱讀部分源代碼,主要參考的就是這個(gè)版本。

3. STL的六大組件

【C++】了解一下STL,開啟C++之路,c++,開發(fā)語(yǔ)言
STL包含六大組件,分別是:

  1. 容器(Containers):容器是STL中最重要的組件之一。它提供了各種數(shù)據(jù)結(jié)構(gòu)(如數(shù)組、鏈表、堆、映射等),用于存儲(chǔ)和組織數(shù)據(jù)。常用的容器包括vector、list、deque、set、map等。

  2. 算法(Algorithms):算法是STL的核心組件之一,提供了一系列的常用算法,如排序、查找、合并、拷貝等。開發(fā)者可以直接調(diào)用這些算法,在容器上進(jìn)行各種操作。

  3. 迭代器(Iterators):迭代器是STL中非常重要的概念,用于遍歷容器中的元素。迭代器提供了一種統(tǒng)一的方式來(lái)訪問和操作容器中的元素,使得算法可以獨(dú)立于具體容器的實(shí)現(xiàn)。

  4. 配接器(Adapters):適配器是STL中用于擴(kuò)展和修改容器或算法功能的組件。STL提供了多種適配器,如stack、queue、priority_queue等,可以通過(guò)適配器將容器或算法的接口進(jìn)行轉(zhuǎn)換,以滿足特定的需求。

  5. 空間配置器(Allocators):分配器是STL中用于內(nèi)存管理的組件。STL的容器在內(nèi)部使用分配器來(lái)動(dòng)態(tài)分配和釋放內(nèi)存,開發(fā)者可以通過(guò)自定義分配器,對(duì)內(nèi)存分配進(jìn)行優(yōu)化或擴(kuò)展。

  6. 仿函數(shù)(Functors):仿函數(shù)是STL中用于封裝函數(shù)對(duì)象的組件。STL的算法中經(jīng)常需要接受一個(gè)函數(shù)對(duì)象作為參數(shù),用于指定具體的操作。仿函數(shù)實(shí)際上是一種重載了函數(shù)調(diào)用操作符的類,可以像函數(shù)一樣調(diào)用。

總的來(lái)說(shuō),STL的六大組件提供了一套完整的工具箱,可以幫助開發(fā)者快速地實(shí)現(xiàn)各種常用的數(shù)據(jù)結(jié)構(gòu)和算法,提高開發(fā)效率和代碼的可重用性。

4. STL的重要性

在一些筆試題目里面就有,就像下面這題:
用C語(yǔ)言代碼可能是c++代碼的兩倍,
【C++】了解一下STL,開啟C++之路,c++,開發(fā)語(yǔ)言
在面試?yán)锩嬉灿邢嚓P(guān)的題目:
【C++】了解一下STL,開啟C++之路,c++,開發(fā)語(yǔ)言

網(wǎng)上有句話說(shuō):“不懂STL,不要說(shuō)你會(huì)C++”。STL是C++中的優(yōu)秀作品,有了它的陪伴,許多底層的數(shù)據(jù)結(jié)構(gòu)以及算法都不需要自己重新造輪子,站在前人的肩膀上,健步如飛的快速開發(fā)。

5. 如何學(xué)習(xí)STL

【C++】了解一下STL,開啟C++之路,c++,開發(fā)語(yǔ)言
【C++】了解一下STL,開啟C++之路,c++,開發(fā)語(yǔ)言

簡(jiǎn)單總結(jié)一下:學(xué)習(xí)STL的三個(gè)境界:1. 使用,2. 明理,3. 擴(kuò)展 。
前面兩個(gè)走好了才能走第三個(gè)。

6. STL的缺陷

  1. STL庫(kù)的更新太慢了。這個(gè)得嚴(yán)重吐槽,上一版靠譜是C++98,中間的C++03基本一些修訂。C++11出來(lái)已經(jīng)相隔了13年,STL才進(jìn)一步更新。
  2. STL現(xiàn)在都沒有支持線程安全。并發(fā)環(huán)境下需要我們自己加鎖。且鎖的粒度是比較大的。
  3. STL極度的追求效率,導(dǎo)致內(nèi)部比較復(fù)雜。比如類型萃取,迭代器萃取。
  4. STL的使用會(huì)有代碼膨脹的問題,比如使用vector/vector/vector這樣會(huì)生成多份代碼,當(dāng)然這是模板語(yǔ)法本身導(dǎo)致的。

有問題請(qǐng)指出,大家一起進(jìn)步吧?。?!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-842215.html

到了這里,關(guān)于【C++】了解一下STL的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++面試八股文:static_cast了解一下?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第20面: 面試官:C++中支持哪些類型轉(zhuǎn)換? 二師兄:C++支持C風(fēng)格的類型轉(zhuǎn)換,并在C++11引入新的規(guī)范了類型轉(zhuǎn)換。 二師兄:C++11引入四種新的類型轉(zhuǎn)換,分別是 static_cast 、 dynamic_cast 、 const_cast 、和 reinterpret_cast 。 二師

    2024年02月09日
    瀏覽(25)
  • 【C++練級(jí)之路】【Lv.17】【STL】set類和map類的模擬實(shí)現(xiàn)

    【C++練級(jí)之路】【Lv.17】【STL】set類和map類的模擬實(shí)現(xiàn)

    快樂的流暢:個(gè)人主頁(yè) 個(gè)人專欄:《C語(yǔ)言》《數(shù)據(jù)結(jié)構(gòu)世界》《進(jìn)擊的C++》 遠(yuǎn)方有一堆篝火,在為久候之人燃燒! STL庫(kù)中的set類和map類,其底層原理都是 通過(guò)紅黑樹來(lái)實(shí)現(xiàn) 的。盡管set和map可以各自實(shí)現(xiàn)一棵紅黑樹,但是為了提高代碼的復(fù)用率,STL庫(kù)中將紅黑樹進(jìn)行了一定

    2024年04月16日
    瀏覽(30)
  • 作為開發(fā)人員,無(wú)代碼開發(fā)平臺(tái) iVX 你有必要了解一下

    作為開發(fā)人員,無(wú)代碼開發(fā)平臺(tái) iVX 你有必要了解一下

    低代碼開發(fā)平臺(tái)作為一種快速、簡(jiǎn)化應(yīng)用程序開發(fā)的方法,正在越來(lái)越受到關(guān)注。今天我們來(lái)了解下 iVX —— 首個(gè)通用無(wú)代碼開發(fā)平臺(tái)。 那么什么是iVX呢?下邊的圖就比較形象了。 大的未來(lái)都是AI ,AI , AI …,理論上不可能有別的。 就拿iVX來(lái)說(shuō)吧,已經(jīng)做了一整套完整的可

    2024年02月15日
    瀏覽(30)
  • 【C++練級(jí)之路】【Lv.12】繼承(你真的了解菱形虛擬繼承嗎?)

    【C++練級(jí)之路】【Lv.12】繼承(你真的了解菱形虛擬繼承嗎?)

    快樂的流暢:個(gè)人主頁(yè) 個(gè)人專欄:《C語(yǔ)言》《數(shù)據(jù)結(jié)構(gòu)世界》《進(jìn)擊的C++》 遠(yuǎn)方有一堆篝火,在為久候之人燃燒! 繼承(inheritance),是面向?qū)ο蟮娜筇匦灾弧?它是面向?qū)ο缶幊讨校?使代碼可以復(fù)用 的最重要的手段,它允許程序員在 保持原有類特性的基礎(chǔ)上進(jìn)行擴(kuò)展

    2024年03月14日
    瀏覽(30)
  • 【C++高階(二)】熟悉STL中的map和set --了解KV模型和pair結(jié)構(gòu)

    【C++高階(二)】熟悉STL中的map和set --了解KV模型和pair結(jié)構(gòu)

    ??博主CSDN主頁(yè):杭電碼農(nóng)-NEO?? ? ?專欄分類:C++從入門到精通? ? ??代碼倉(cāng)庫(kù):NEO的學(xué)習(xí)日記?? ? ??關(guān)注我??帶你學(xué)習(xí)C++ ? ???? 在學(xué)習(xí)了二叉搜索樹后,現(xiàn)在 就可以來(lái)學(xué)習(xí)map和set了,雖然 它們的底層是紅黑樹結(jié)構(gòu),但是紅黑樹 的本質(zhì)也是一顆二叉搜索樹! 本質(zhì)重點(diǎn): 本

    2024年02月05日
    瀏覽(47)
  • 小程序開發(fā)費(fèi)用一覽表,如果你也想要用低成本制作出自己的小程序,來(lái)了解一下!

    小程序開發(fā)費(fèi)用一覽表,如果你也想要用低成本制作出自己的小程序,來(lái)了解一下!

    近幾年來(lái)微信小程序的發(fā)展的十分的迅速,越來(lái)越多的用戶對(duì)小程序已經(jīng)非常熟悉,同時(shí)很多商家都看到了小程序的商機(jī),其中小程序商城更是受到眾多用戶和商家的歡迎。 制作小程序商城主要的方式有兩種,一種是源碼定制開發(fā),一種是直接套用小程序模板了。而其中大家

    2023年04月08日
    瀏覽(23)
  • 帶你深入理解“棧”(c語(yǔ)言 c++和stl Stack三個(gè)版本的模擬實(shí)現(xiàn))

    帶你深入理解“?!保╟語(yǔ)言 c++和stl Stack三個(gè)版本的模擬實(shí)現(xiàn))

    目錄 一.棧的概念及結(jié)構(gòu) 二.棧的實(shí)現(xiàn)(c語(yǔ)言版) 2.1靜態(tài)增長(zhǎng)的棧 2.2動(dòng)態(tài)增長(zhǎng)的棧 2.3動(dòng)態(tài)棧的模擬實(shí)現(xiàn) ? ?1.棧的初始化 ? 2.入棧 ?3.出棧 4.獲取棧頂元素 5.獲取棧中有效數(shù)據(jù)個(gè)數(shù) 6.檢查棧是否為空 7.棧的銷毀 三.C++ 版本模擬實(shí)現(xiàn)棧 ?1.C++版本的源代碼 四.c語(yǔ)言版本的源代碼

    2024年02月08日
    瀏覽(41)
  • C++ 編程入門指南:深入了解 C++ 語(yǔ)言及其應(yīng)用領(lǐng)域

    C++ 是一種跨平臺(tái)的編程語(yǔ)言,可用于創(chuàng)建高性能應(yīng)用程序。 C++ 是由 Bjarne Stroustrup 開發(fā)的,作為 C 語(yǔ)言的擴(kuò)展。 C++ 為程序員提供了對(duì)系統(tǒng)資源和內(nèi)存的高級(jí)控制。 該語(yǔ)言在 2011 年、2014 年、2017 年和 2020 年進(jìn)行了 4 次重大更新,分別為 C++11、C++14、C++17 和 C++20。 C++ 是世界上

    2024年03月21日
    瀏覽(33)
  • 從C語(yǔ)言到C++_38(C++的IO流+空間適配器)STL六大組件聯(lián)系

    從C語(yǔ)言到C++_38(C++的IO流+空間適配器)STL六大組件聯(lián)系

    目錄 1. C語(yǔ)言的輸入和輸出和流 2. C++的IO流 2.1 C++標(biāo)準(zhǔn)IO流 2.2 C++文件IO流 2.3 stringstream(字符流) 3. 空間配置器(了解) 3.1 一級(jí)空間適配器 3.2 二級(jí)空間配置器 3.3 二級(jí)空間適配器的空間申請(qǐng) 3.4 二級(jí)空間配置器的空間回收 3.5?對(duì)象構(gòu)造與釋放和與容器結(jié)合 4. STL六大組件聯(lián)系

    2024年02月09日
    瀏覽(29)
  • “C++基礎(chǔ)入門指南:了解語(yǔ)言特性和基本語(yǔ)法”

    “C++基礎(chǔ)入門指南:了解語(yǔ)言特性和基本語(yǔ)法”

    C++是在C的基礎(chǔ)之上,容納進(jìn)去了面向?qū)ο缶幊趟枷耄⒃黾恿嗽S多有用的庫(kù),以及編程范式 等。熟悉C語(yǔ)言之后,對(duì)C++學(xué)習(xí)有一定的幫助 工作之后,看誰(shuí)的技術(shù)牛不牛逼,不用看誰(shuí)寫出多牛逼的代碼,就代碼風(fēng)格掃一眼,立刻就能看出來(lái)是正規(guī)軍還是野生的程序員。代碼的風(fēng)

    2024年02月16日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包