版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、衡陽師范學(xué)院計(jì)算機(jī)系1STL在C+中稱為標(biāo)準(zhǔn)模板庫。STL定義了一系列用途廣泛的模板類和模板函數(shù),它們可以用來實(shí)現(xiàn)許多通用的算法和數(shù)據(jù)結(jié)構(gòu)。衡陽師范學(xué)院計(jì)算機(jī)系2標(biāo)準(zhǔn)模板庫STL的核心內(nèi)容是3個(gè)基本組件:容器、算法和迭代器。STL將這些組件結(jié)合在一起為許多程序設(shè)計(jì)難題提供實(shí)際可行的解決辦法。衡陽師范學(xué)院計(jì)算機(jī)系3Set集合容器衡陽師范學(xué)院計(jì)算機(jī)系4set集合容器實(shí)現(xiàn)了紅黑樹(Red-Black Tree)的平衡二叉樹的數(shù)據(jù)結(jié)構(gòu),在插入元素時(shí),它會(huì)自動(dòng)調(diào)整二叉樹的排列,把該元素放到適當(dāng)?shù)奈恢?。以確保每個(gè)子樹根節(jié)點(diǎn)的鍵值大于左子樹所有節(jié)點(diǎn)的鍵值,而小于右子樹的鍵值;另外,還得確保左子樹的高度與右子
2、樹的高度相等,這樣,二叉樹的高度最小,從而檢索速度最快。注意:set集合不會(huì)重復(fù)插入相同鍵值的元素,采取忽略處理。衡陽師范學(xué)院計(jì)算機(jī)系52612376162932215203080上圖是一個(gè)典型的平衡檢索二叉樹衡陽師范學(xué)院計(jì)算機(jī)系6平衡二叉檢索樹的檢索使用中序遍歷算法,檢索效率高于vector、deque和list等容器。Set 的特點(diǎn) set容器中,插入元素時(shí),就會(huì)自動(dòng)將元素按鍵值由小到大的順序排列,并沒有重復(fù)的鍵值。對(duì)于set容器中的鍵值,不可直接去修改。所以,構(gòu)造set集合的主要目的就是為了快速檢索。衡陽師范學(xué)院計(jì)算機(jī)系8創(chuàng)建一個(gè)創(chuàng)建一個(gè)set集合對(duì)象集合對(duì)象#includeusing
3、namespace std; set v1; set v2; 衡陽師范學(xué)院計(jì)算機(jī)系9采用采用insert()方法插入元素方法插入元素采用insert()方法把元素插入集合中去,插入的具體規(guī)則在默認(rèn)的比較規(guī)則下,是按元素值從小到大插入。set1-1.cpp 衡陽師范學(xué)院計(jì)算機(jī)系10采用采用insert()方法插入元素方法插入元素采用insert()方法把元素插入集合中去,如果自己指定了比較規(guī)則的函數(shù),則按自定義比較規(guī)則函數(shù)插入。set1-2.cpp 衡陽師范學(xué)院計(jì)算機(jī)系11采用采用insert()方法插入元素方法插入元素如果元素是結(jié)構(gòu)體,可以直接把比較函數(shù)寫在結(jié)構(gòu)體內(nèi)。set1-3.cpp 衡陽
4、師范學(xué)院計(jì)算機(jī)系12元素的反向遍歷元素的反向遍歷使用反向迭代器reverse_iterator可以反向遍歷元素,輸出的結(jié)果正好是集合元素的反向排序結(jié)果。它需要用到rbegin()和rend()兩個(gè)方法,它們分別給出了反向遍歷的開始位置和結(jié)束位置。set2.cpp 衡陽師范學(xué)院計(jì)算機(jī)系13元素的刪除遍歷元素的刪除遍歷與插入元素的處理一樣,集合具有高效的刪除處理功能,并自動(dòng)重復(fù)調(diào)整內(nèi)部的紅黑樹的平衡。刪除的對(duì)象可以是某個(gè)迭代器位置上的元素、等于某鍵值的元素、一個(gè)區(qū)間上的元素和清空集合。set3.cpp 衡陽師范學(xué)院計(jì)算機(jī)系14元素的檢索元素的檢索使用find()方法對(duì)集合進(jìn)行搜索,如果找到查找的鍵
5、值,則返回該鍵值的迭代器位置,否則,返回集合最后一個(gè)元素后面的一個(gè)位置,即end()。set4.cpp 衡陽師范學(xué)院計(jì)算機(jī)系15Map映照容器衡陽師范學(xué)院計(jì)算機(jī)系16map容器中的元素?cái)?shù)據(jù)是由一個(gè)鍵值和一個(gè)映照數(shù)據(jù)組成的,鍵值與映照數(shù)據(jù)之間具有一一映照的關(guān)系。插入元素的鍵值不允許重復(fù),比較函數(shù)只對(duì)元素的鍵值進(jìn)行比較。元素的各項(xiàng)數(shù)據(jù)可通過鍵值檢索出來。衡陽師范學(xué)院計(jì)算機(jī)系17map映照容器的內(nèi)部結(jié)構(gòu)也是平衡二叉檢索樹。元素?cái)?shù)據(jù)按照從小到大的順序排列。衡陽師范學(xué)院計(jì)算機(jī)系18使用map容器,需要頭文件包含聲明“#include”。衡陽師范學(xué)院計(jì)算機(jī)系19Map創(chuàng)建、元素插入和遍歷訪問創(chuàng)建、元素插入
6、和遍歷訪問創(chuàng)建map對(duì)象,鍵值與映照數(shù)據(jù)的類型由自己定義。在沒有指定比較函數(shù)時(shí),元素的插入位置是按鍵值從小到大的。map1.cpp衡陽師范學(xué)院計(jì)算機(jī)系20刪除元素刪除元素map映照容器用erase()刪除元素函數(shù)可以刪除某個(gè)迭代器位置上的元素、等于某個(gè)鍵值的元素、一個(gè)迭代器區(qū)間上的所有元素,當(dāng)前,也可以用clear()方法清空map映照容器。map2.cpp衡陽師范學(xué)院計(jì)算機(jī)系21元素反向遍歷元素反向遍歷可以用反向迭代器reverse_iterator反向遍歷map映照容器中的數(shù)據(jù),它需要rbegin()方法和rend()方法指出反向遍歷的起始位置和終止位置。map3.cpp衡陽師范學(xué)院計(jì)算機(jī)
7、系22元素的搜索元素的搜索使用find()方法來搜索某個(gè)鍵值,如果搜索到了,則返回該鍵值所在的迭代器的位置,否則,返回end()迭代器的位置。由于map采用平衡搜索二叉樹數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn),所以搜索速度是極快的。map4.cpp衡陽師范學(xué)院計(jì)算機(jī)系23自定義比較函數(shù)自定義比較函數(shù)在定義map的時(shí)候,如果沒有指定比較函數(shù),那么采用默認(rèn)的比較函數(shù),即按鍵值由小到大的順序插入元素。在很多情況下,可以根據(jù)需要自己編寫比較函數(shù)。map5.cpp衡陽師范學(xué)院計(jì)算機(jī)系24Vector容器衡陽師范學(xué)院計(jì)算機(jī)系25動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組vector容器容器 動(dòng)態(tài)數(shù)值是指可以根據(jù)需要改變大小的數(shù)組。雖然在C+中數(shù)組的大小在
8、編譯時(shí)是固定的,因?yàn)槌绦蛟谶\(yùn)行時(shí)不能改變數(shù)組的大小來適應(yīng)程序需求。然而,vector可以根據(jù)需要來分配內(nèi)存,從而解決這個(gè)問題。雖然vector是動(dòng)態(tài)的,你仍然可以使用標(biāo)準(zhǔn)的數(shù)組下標(biāo)運(yùn)算來訪問數(shù)組中的元素。衡陽師范學(xué)院計(jì)算機(jī)系26創(chuàng)建一個(gè)創(chuàng)建一個(gè)vector對(duì)象對(duì)象#includeusing namespace std; vector v1; vector v2; vectorv3; 衡陽師范學(xué)院計(jì)算機(jī)系27向向vector對(duì)象中添加數(shù)值對(duì)象中添加數(shù)值 v1.push_back(0); v1.push_back(1); for (i=2; i=10;i+) v1.push_back(i);衡陽師
9、范學(xué)院計(jì)算機(jī)系28獲得獲得vector對(duì)象的大小對(duì)象的大小 v1.size() for (i=0; iv1.size();i+) cout v1i ;衡陽師范學(xué)院計(jì)算機(jī)系29創(chuàng)建創(chuàng)建vector對(duì)象的迭代器對(duì)象的迭代器#includeusing namespace std; vector:iterator p 衡陽師范學(xué)院計(jì)算機(jī)系30獲得獲得vector對(duì)象中第一個(gè)和最后一個(gè)元素對(duì)象中第一個(gè)和最后一個(gè)元素 vector:iterator p = v1.begin(); vector:iterator p = v1.end();衡陽師范學(xué)院計(jì)算機(jī)系31在在vector對(duì)象中插入元素;對(duì)象中插入元素;vector:iterator p = v1.begin(); p = p+2; int a10; v1.insert(p, a , a+10);衡陽師范學(xué)院計(jì)算機(jī)系32在在vector對(duì)象中刪除元素;對(duì)象中刪除元素; v1.erase(p, p+3); v1.pop_back();衡陽師范學(xué)院計(jì)算機(jī)系33修改修改vector對(duì)象中的內(nèi)容;對(duì)象中的內(nèi)容; v11 = v11 * v11 v12 = v12 + 100衡陽師范學(xué)院計(jì)算機(jī)系34使用使用sort排列算法排列算法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025園林綠化合同
- 2025建設(shè)工程施工合同(VIII)
- 2025企業(yè)代培訓(xùn)合同范文
- 2025合同模板健身俱樂部會(huì)員入會(huì)協(xié)議 范本
- 沙盤模型制作合同
- 醫(yī)療科技在小兒發(fā)熱治療中的應(yīng)用
- 課題申報(bào)參考:馬克思隱喻敘事的唯物史觀原理研究
- 課題申報(bào)參考:禮俗互動(dòng)視域下明清江南婚嫁刺繡裝飾研究
- 課題申報(bào)參考:科學(xué)教育教學(xué)體系研究
- 綠色能源在校園電力供應(yīng)中的應(yīng)用與展望
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫含答案解析
- 人教版初中語文2022-2024年三年中考真題匯編-學(xué)生版-專題08 古詩詞名篇名句默寫
- 2024-2025學(xué)年人教版(2024)七年級(jí)(上)數(shù)學(xué)寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- ESG表現(xiàn)對(duì)企業(yè)財(cái)務(wù)績(jī)效的影響研究
- 旅游活動(dòng)碳排放管理評(píng)價(jià)指標(biāo)體系構(gòu)建及實(shí)證研究
- 2022年全國職業(yè)院校技能大賽-電氣安裝與維修賽項(xiàng)規(guī)程
- 小學(xué)德育養(yǎng)成教育工作分層實(shí)施方案
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫附答案
- 2024年4月浙江省00015英語二試題及答案含評(píng)分參考
- 黑枸杞生物原液應(yīng)用及產(chǎn)業(yè)化項(xiàng)目可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論