版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1整理pptQQ:77025077博客:Mail:網(wǎng)址:C語言語言C+語言語言 傳智播客傳智播客整理ppt2STL入門導入STL的概念與組成Iterator(迭代器) Container(容器)Algorithm(算法)Adaptors(配接器)整理ppt3導入抽象的重要性計算機科學的重要進步,許多是由于發(fā)掘了新的抽象性質(zhì)而促成的面向過程基于對象面向?qū)ο蠓盒驼韕pt4導入面向過程(Procedure-Oriented)的抽象抽象出Procedure(Function)的概念,把程序分成若干個子過程。將事物的方法隱藏于各個函數(shù)內(nèi)C語言。適用于處理小型的程序。對大型程序, 子程序之間關(guān)系復雜,不
2、易處理變化的需求引發(fā)軟件危機的原因需要新的抽象。耦合度變化總是存在的整理ppt5導入面向過程示例調(diào)用子過程時不用考慮其實現(xiàn)細節(jié)。整理ppt6導入基于對象(Object-Based)的抽象引入抽象數(shù)據(jù)類型(ADT,Abstract Data Type)。C+的類,將事物的屬性與方法緊密地結(jié)合在一起VB、帶類的C。與面向過程相比,可以更好地處理變化,一定程度上化解了軟件危機。但各個類之間的關(guān)系不容易處理,而且程序代碼數(shù)量比面向過程時更大需要新的抽象。整理ppt7導入示例Person是一個抽象數(shù)據(jù)類型強內(nèi)聚,低耦合。整理ppt8導入面向?qū)ο?Object-Oriented)的抽象抽象出封裝、繼承、多
3、態(tài)( polymorphic )的概念。與基于對象相比,有更多的間接性。運用多態(tài),我們可以調(diào)用某種方法,而不用指定此方法所屬的類型。因而達到更進一步的抽象性。它為我們帶來了什么?MFC(用面向?qū)ο蠹夹g(shù)封裝WindowsAPI,抽象出一個類體系)整理ppt9導入示例對用戶封裝了具體的類型,用戶只需和抽象類打交道整理ppt10MFC類體系圖物體類窗口類視圖類邊框類Application Framework整理ppt11導入泛型(Generic)的概念Generic是一種抽象 就如 OO是一種抽象。還沒有語法與之相對應正在開發(fā)中。(Function、Class、D : public B)它為我們帶來
4、了什么?STL。整理ppt12STL的概念何為STL?STL(Standard Template Library)是C標準庫的一部分(80%),是用C Template機制來表達泛型的庫。STL(Standard Template Library)是用泛型技術(shù)來設(shè)計完成的實例 就如 MFC(Microsoft Foundational Classes)是用面向?qū)ο蠹夹g(shù)來設(shè)計完成的實例整理ppt13STL的概念STL抽象的是什么?有些算法并不依賴于數(shù)據(jù)結(jié)構(gòu)的特定實現(xiàn),而只是依賴于該結(jié)構(gòu)的幾個基本的語義屬性.STL抽象出這些基本屬性(Concept),成功的將算法與數(shù)據(jù)結(jié)構(gòu)分離,在沒有效率損失的前
5、提下,得到了及大的彈性。整理ppt14STL的概念示例用一個泛型算法可以處理多種數(shù)據(jù)結(jié)構(gòu)。而且在獲得彈性彈性的同時運行效率效率上和以前相比沒有損失。整理ppt15STL的組成六大組件容器(Container)算法(Algorithm)迭代器(Iterator)仿函數(shù)(Function object)適配器(Adaptor)空間配制器(allocator)STL的六大組件全都是抽象抽象出來的Concepts整理ppt16STL的組成STL在哪里?后綴名?Namespacestd整理ppt17定義并初始化一個list容器對區(qū)間內(nèi)每個元素調(diào)用傳入的操作pfi整理ppt18Copy是一個泛型算法,它將
6、文件中的內(nèi)容顯示到屏幕上整理ppt19相關(guān)資料STL之父訪談錄 詳細介紹了STL的歷史,點明了STL的設(shè)計宗旨以及它與OO的關(guān)系。復習C+ Template機制。習題:STL example1、STL example2整理ppt20新的語言特性Namespace(名字空間) Template的新特性 新的類型轉(zhuǎn)換運算符整理ppt21命名空間(Namespace)現(xiàn)在的軟件多以程序庫、模塊、組件拼湊而成,名稱沖突問題越來越嚴重。Namespace就是用來解決此問題的。Namespace將不同的標識符號集合在一個具體的名稱范圍內(nèi)。整理ppt22命名空間(Namespace)Namespace的名字
7、和標識符號間以 : :分隔 (類似于Class 與 members之間)整理ppt23命名空間(Namespace)與類不同的是,Namespace是開放的??梢栽诓煌K之間定義和擴展namespace。因此可以用namespace來定義模塊、程序庫或組件。整理ppt24命名空間(Namespace)using declaration,我們可以避免一再寫出冗長的namespace名稱using directive這就是一個using declaration,它使I成為當前范圍內(nèi)代表Renwind:I的同義詞。這就是一個using directive,它使Renwind內(nèi)的所有名字曝光。整理p
8、pt25命名空間(Namespace)using directive會再度引發(fā)名稱沖突調(diào)用哪一個 i 呢?這種寫法只適用于寫示例程序或相對小的程序整理ppt26Template的新特性類模板顯示特化(class template explicit specialization )整理ppt27Template的新特性類模板偏特化(class template partial specialization)整理ppt28Template的新特性默認模板參數(shù)根據(jù)前一個模板參數(shù)T,設(shè)定下一個模板參數(shù)整理ppt29Template的新特性成員模板(member template)模板類的成員函數(shù)可以是
9、一個模板整理ppt30Template的新特性關(guān)鍵字typename做為類型前的標識符號。指出SubType是T中定義的一個類型,因此ptr是一個指向T:SubType的指針。如果不加typename,表達式被認為是T中的靜態(tài)成員SubType和ptr的乘積。整理ppt31Template的新特性關(guān)鍵字 typenameC的一般規(guī)則是,除了以typename修飾以外,template內(nèi)的任何標識符號都被視為一個值(value),而非一個類型(type)。typename的第二個作用:在模板聲明中替換關(guān)鍵字class。整理ppt32新的類型轉(zhuǎn)換運算符static_cast只有當類型轉(zhuǎn)換有所定義,
10、整個轉(zhuǎn)換才會成功。由float轉(zhuǎn)換到int有所定義由char*轉(zhuǎn)換到string有所定義整理ppt33新的類型轉(zhuǎn)換運算符dynamic_cast將多態(tài)類型向下轉(zhuǎn)型(downcast)為其實際類型多態(tài)類型運行期進行檢驗整理ppt34新的類型轉(zhuǎn)換運算符const_cast、reinterpret_castC語言中的轉(zhuǎn)型(用小圓括號)可替換替換dynamic_cast之外的其它三種類型。也因此無法明確顯示使用它的確切理由。新的轉(zhuǎn)型操作符給了編譯器更多信息,讓編譯器清楚知道轉(zhuǎn)型的理由。整理ppt35Container(容器)容器的概念用來管理一組元素。整理ppt36Container(容器)容器的分類
11、序列式容器(Sequence containers)每個元素都有固定位置取決于插入時機和地點,和元素值無關(guān)。vector、deque、list關(guān)聯(lián)式容器(Associated containers)元素位置取決于特定的排序準則,和插入順序無關(guān)set、multiset、map、multimap整理ppt37序列式容器Vectors將元素置于一個動態(tài)數(shù)組中加以管理??梢噪S機存取元素(用索引直接存?。?。數(shù)組尾部添加或移除元素非??焖?。但是在中部或頭部安插元素比較費時。整理ppt38序列式容器Vectors示例用vector前,必須包含頭文件整理ppt39序列式容器Dequesdeque,是“doub
12、le-ended queue”的縮寫??梢噪S機存取元素(用索引直接存?。?shù)組頭部和尾部添加或移除元素都非??焖?。但是在中部或頭部安插元素比較費時。整理ppt40序列式容器Deques示例用deque前,必須包含頭文件整理ppt41序列式容器Lists雙向鏈表。不提供隨機存?。ò错樞蜃叩叫璐嫒〉脑?,O(n))。在任何位置上執(zhí)行插入或刪除動作都非常迅速,內(nèi)部只需調(diào)整一下指針。整理ppt42序列式容器Lists示例用list前,必須包含頭文件整理ppt43迭代器(Iterator)簡述指針與數(shù)組指針與其它數(shù)據(jù)結(jié)構(gòu)呢?比如說鏈表?存儲空間是非連續(xù)的。不能通過對指向這種數(shù)據(jù)結(jié)構(gòu)的指針做累加來遍歷。能
13、不能提供一個行為類似指針的類,來對非數(shù)組的數(shù)據(jù)結(jié)構(gòu)進行遍歷呢?這樣我們就能夠以同樣的方式來遍歷所有的數(shù)據(jù)結(jié)構(gòu)(所有容器)。用指針遍歷數(shù)組整理ppt44迭代器(Iterator)簡述迭代器與容器通過迭代器,我們可以用相同的方式來訪問、遍歷容器。每種容器都必須提供自己的迭代器容器提供一些函數(shù)以獲得迭代器并以之遍歷所有元素。用迭代器遍歷容器泛型抽象整理ppt45迭代器(Iterator)簡述迭代器的概念迭代器是一個“可遍歷STL容器內(nèi)全部或部分元素”的對象。一個迭代器指出容器中的一個特定位置。具有遍歷復雜數(shù)據(jù)結(jié)構(gòu)的能力。整理ppt46迭代器(Iterator)簡述迭代器的基本操作用法和指針一樣,其實
14、指針就是一種迭代器運算符重載整理ppt47迭代器(Iterator)簡述迭代器示例整理ppt48關(guān)聯(lián)式容器Sets/Multisets內(nèi)部的元素依據(jù)其值自動排序Set內(nèi)的相同數(shù)值的元素只能出現(xiàn)一次,Multisets內(nèi)可包含多個數(shù)值相同的元素。內(nèi)部由二叉樹實現(xiàn),便于查找。整理ppt49關(guān)聯(lián)式容器Sets/Multisets用set/multiset前,必須包含頭文件不能用push_back因為是自動排序的。整理ppt50關(guān)聯(lián)式容器Maps/MultimapsMap的元素是成對成對的鍵值/實值,內(nèi)部的元素依據(jù)其值自動排序。Map內(nèi)的相同數(shù)值的元素只能出現(xiàn)一次,Multimaps內(nèi)可包含多個數(shù)值相
15、同的元素。內(nèi)部由二叉樹實現(xiàn),便于查找。整理ppt51關(guān)聯(lián)式容器Maps/Multimaps用map/multimap前,必須包含頭文件便捷函數(shù),返回一個pair對象整理ppt52容器的共通能力所有容器提供的都是value語意,而非reference語意。容器執(zhí)行插入元素的操作時,內(nèi)部實施拷貝動作。所以STL容器內(nèi)存儲的元素必須能夠被拷貝(必須提供拷貝構(gòu)造函數(shù))。每個容器都提供可返回迭代器的函數(shù),運用返回的迭代器就可以訪問元素。通常STL不會丟出異常。要求使用運行者對確保傳入正確的參數(shù)。整理ppt53容器的共通操作初始化每個容器都提供了一個默認構(gòu)造函數(shù),一個拷貝構(gòu)造函數(shù)以某個數(shù)組的元素為初值完成
16、初始化。以某個容器的元素為初值完成初始化。整理ppt54容器的共通操作與大小相關(guān)的操作函數(shù)返回迭代器的函數(shù)整理ppt55容器的共通操作比較操作整理ppt56Vector容器詳解大?。⊿ize)和容量(Capacity)capacity(),傳回vector能夠容納的元素個數(shù)。size(),傳回vector內(nèi)現(xiàn)有元素的個數(shù)。如果capacity不夠用,則重新分配內(nèi)存使和vector相關(guān)聯(lián)的pointer,reference,iterator全部失效。很費時間。整理ppt57Vector容器詳解賦值操作元素存取整理ppt58Vector容器詳解插入和刪除操作整理ppt59各個容器的使用時機整理pp
17、t60Iterator(迭代器)迭代器的作用能夠讓迭代器與算法不干擾的相互發(fā)展,最后又能無間隙的粘合起來。重載了,!,運算符。用以操作復雜的數(shù)據(jù)結(jié)構(gòu)。容器提供迭代器,算法使用迭代器。整理ppt61Iterator(迭代器)一個簡單的例子容器提供提供迭代器算法使用使用迭代器整理ppt62Iterator(迭代器)迭代器的分類不同容器提供自己的迭代器,所以不同迭代器具有不同的能力。不同的算法需要不同的迭代器的能力;相同的算法需要根據(jù)迭代器的能力不同而做相應的優(yōu)化。Vector的內(nèi)部是數(shù)組List的內(nèi)部是雙向鏈表因此List提供了自己的sort成員函數(shù)整理ppt63Iterator(迭代器)迭代器的
18、分類read only不能改變iterator所指對象write only單向迭代器,iter+雙向迭代器,iter+、iter-所有指針的運算能力,p+n, p-n, pn, p1-p2, p1p2整理ppt64Iterator(迭代器)一個例子advance()整理ppt65Iterator(迭代器)迭代器的相關(guān)類型有些算法內(nèi)部需要用到迭代器所代表元素的類型,這個就是迭代器的相關(guān)類型。迭代器的traits編程技法用來擴充容器與算法。整理ppt66Iterator adaptor(迭代器配接器)概念提供和iterator相同的接口,但是改變內(nèi)部的實現(xiàn)方法。分類Insert iteratorS
19、tream iteratorReverse iterator接口還是迭代器的接口,前綴描述了迭代器的內(nèi)部實現(xiàn)整理ppt67Iterator adaptor(迭代器配接器)Insert(安插型)iterator整理ppt68設(shè)計模式 盡管Alexander所指的是城市和建筑模式,但他的思想也同樣適用于面向?qū)ο笤O(shè)計模式。只是在面向?qū)ο蟮慕鉀Q方案里,我們用對象和接口代替了墻壁和門窗。兩者的核心都在于提供了相關(guān)問題的解決方案。Gang of Four,設(shè)計模式Iterator與adaptor是設(shè)計模式中的兩種。整理ppt69設(shè)計模式管理模式Don S. Olson, Carol L. Stimmel,
20、 The Manager Pool分析模式Martin Fowler, Analysis Patterns設(shè)計模式實現(xiàn)模式Scott Meyers, Effective C+重構(gòu)模式Martin Fowler, Refactoring整理ppt70設(shè)計模式我們需要這樣一種語言:它讓我們高效地交流、討論那些常見的、重復出現(xiàn)的設(shè)計概念,并在這些概念上建立起我們的系統(tǒng)。不要僅僅把模式當作解決方案,而要把它們當作設(shè)計的詞匯,這些詞匯可以根據(jù)一定的規(guī)則組合起來形成句子(也就是系統(tǒng)設(shè)計)。Brandon Goldfedder,模式之樂整理ppt71Iterator模式定義:提供一種方法,使用按順序訪問某個容器所含的各個元素,而無需曝露該容器的內(nèi)部表述方法。整理ppt72Adaptor模式定義:將一個類的界面轉(zhuǎn)換為另一個類的界面,使原本因界面不相容而不能合作的classes,可以一起運作。整理ppt73Adaptor模式在STL中,改變iterator界面的叫做iterator
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年6月浙江省高考生物試卷真題(含答案解析)
- 中國戶外廣告投光燈行業(yè)市場調(diào)查研究報告
- 2024至2030年中國射頻前端接收濾波放大單元數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國凸面平焊法蘭數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國HDPE再生顆粒數(shù)據(jù)監(jiān)測研究報告
- 2024年中國耐熱硅橡膠屏蔽軟電纜市場調(diào)查研究報告
- 2024年中國彩照模塊市場調(diào)查研究報告
- 2024年中國手機外殼塑膠無塵噴涂線市場調(diào)查研究報告
- 程力勞動合同
- 倉單轉(zhuǎn)賣合同
- 《網(wǎng)絡(luò)滲透技術(shù)》課程標準
- 福建省福州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細及行政區(qū)劃代碼
- 測量監(jiān)理標準細則
- 【詳細版】小學英語外研新標準二年級上冊Module8李蘭Shegoesswimming教案
- 月租車輛費用繳納確認單
- 回旋鉆鉆孔施工方案
- 人教版五年級數(shù)學上冊課件練習十一
- 顏文偉大夫文章1-29篇
- 北師大版數(shù)學五年級上冊期中測試卷(5套)
- 《木雕》課程教學大綱
- 陜師大版五年級上冊綜合實踐教案
評論
0/150
提交評論