C++STL理论基础
C++STL理論基礎(chǔ)
開發(fā)工具與關(guān)鍵技術(shù):C++、VisualStudio 作者:何任賢 撰寫時間:2019年08月16日 STL(StandardTemplateLibrary,標(biāo)準(zhǔn)模板庫)是惠普實驗室開發(fā)的一系列軟件 的統(tǒng)稱。現(xiàn)然主要出現(xiàn)在 C++中,但在被引入 C++之前該技術(shù)就已經(jīng)存在了很長 的一段時間。 STL
的從廣義上講分為三類:algorithm(算法)、container(容器)和 iterator (迭代器),
容器和算法通過迭代器可以進(jìn)行無縫地連接。幾乎所有的代碼都采 用了模板類和模板函數(shù)
的方式,這相比于傳統(tǒng)的由函數(shù)和類組成的庫來說提供了 更好的代碼重用機會。在 C++標(biāo)
準(zhǔn)中,STL 被組織為下面的 13 個頭文 件: 、、、
、、、、、 、、、
和。
上圖是指算法、迭代器和容器的關(guān)系
STL的六大組件:
那么使用STL有什么好處:
離確實使得 STL 變得非常通用。 例如,在 STL的 vector 容器中,可以放入元素、基
礎(chǔ)數(shù)據(jù)類型變量、元素 的地址; STL的sort()函數(shù)可以用來操作 vector,list 等容器。
們就可以把精力放在程序開發(fā)的別的方面。
5.高可重用性:STL 中大多數(shù)的代碼都采用了模板類和模版函數(shù)的方式實現(xiàn)。
6.高性能:如 map 可以高效地從十萬條記錄里面查找出指定的記錄,因為 map 是采用
紅黑樹的變體實現(xiàn)的。(紅黑樹是平橫二叉樹的一種)
7.跨平臺:如用 windows的 Visual Studio編寫的代碼可以在Mac OS 的XCode 上直接
編譯。
關(guān)于STL三類概述
序列式容器的特點:
每個元素都有固定位置--取決于插入時機和地點,和元素值無關(guān)。
序列式容器有三種分別是vector 、 deque 、 list
實現(xiàn)頭文件的頭文件分別是、、
關(guān)聯(lián)式容器的特點:
元素位置取決于特定的排序準(zhǔn)則,和插入順序無關(guān)
序列式容器有四種分別是set 、 multiset 、 map 、 multimap
實現(xiàn)頭文件的頭文件分別是 、、、
迭代器的概念:迭代器在STL中用來將算法和容器聯(lián)系起來,起著一種黏和劑的作用,每一個容器都定義了其本身所專有的迭代器,用以存取容器中的元素。
迭代器部分主要由頭文件, 和 組成。
是一個很小的頭文件,它包括了貫穿使用在 STL 中的幾個模板的聲明。
主要提供了迭代器使用的許多方法。
主要部分是模板類 allocator,它負(fù)責(zé)產(chǎn)生所有容器中的默認(rèn)分配器,并
且為容器中的元素分配存儲空間,同時也為某些算法執(zhí)行期間產(chǎn)生的臨時對象提供
機制。
算法:STL 提供了大約 100 個實現(xiàn)算法的模版函數(shù),只要熟悉了 STL 之后,許多代
碼可以被大大的化簡,只需要通過調(diào)用一兩個算法模板,就可以完成所需要的功能并
大大地提升效率。
算法部分主要由頭文件,和組成,
是所有 STL 頭文件中最大的一個,它是由一大堆模版函數(shù)組成的。
總結(jié)
以上是生活随笔為你收集整理的C++STL理论基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这或许才是产品人真实的工资情况
- 下一篇: s3c2440移植MQTT