已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,標準樣版庫(StandardTemplateLibrary),第十二章,.,2,前言,樣版類別的設計概念可追溯至1968年DougMallory所提之MassProducedSoftwareComponents,揭櫫以軟體IC之再用性,構築標準樣版庫的遠景。泛型程式設計範式(GenericProgrammingParadigm),於軟體開發時,建立所謂的軟體元件分類法,從需求(Requirement)、概念(Concept)、模式(Model)至精練(Refinement),可以有標準的元件與介面,且元件可以獨立操作,又兼顧彈性與交換操作性等等雖然樣版類別具有嚴格的規範,較複雜的樣版類別,亦於編譯時即完成主要處理,故無損於執行時的效率。,.,3,C+提供之標準樣版庫,容器(Containers)疊代器(Iterators)轉換器(Adaptors)演算法(Algorithms)函數物件(FunctionObjects),.,4,對經常使用之資料結構(如:陣列、堆疊、佇列與串列等)與操作此資料結構之相關演算法,提供便利的描述與操作。使用者不再需要自行設計細部的操作程式,而僅是高階的描述與操作。容器樣版類別的設計主要係針對資料結構;演算法樣版類別的設計主要係針對演算法;疊代器樣版類別的設計主要係針對元件間的膠合(Coupling);轉換器樣版類別的設計主要係針對容器間的轉接(Adapting);函數物件的設計主要係針對運算需求的傳遞。,.,5,容器(Container),容器樣版類別就是用來產生各種容器物件之樣版類別,即此類別可容納一群的容器物件,例如:水桶可用來裝水、米、沙與油等等。當宣告與定義Templateclass桶之後,可宣告裝水、米、沙與油等不同的桶容器,來容納r1,r2,w1,s1,s2,s3,o1,o2等不同物件桶r1,r2;桶w1;桶s1,s2,s3;桶o1,o2;,.,6,就物件導向程式設計,簡單的說,容器就是一種事先規劃建立之資料結構(例如書架、桶子等),可藉以儲存各式各樣的資料(例如書、水、米、沙與油等),可以是C+提供的STL容器或使用者自行設計之容器。C+提供的容器主要包含序列容器(SequenceContainer)與關聯容器(AssociateContainer),而操作這些容器時,須藉由疊代器(Iterators)來標示處理的對象為那一個。,.,7,疊代器,疊代表示可以藉由其重覆、來回與隨機取存容器中之資料,例如藉由陣列元素之索引或指標,可以找到陣列中的每一個元素。疊代器是一個泛型的指標,C+程式允許疊代器以同一的方式操作不同的資料結構,即重覆、來回與隨機取存資料的操作模式,適用於序列容器與關聯容器中各式各樣的容器。,.,8,表12.2.1-1容器與疊代器支援適用情形:*表示具備支援功能,.,9,序列容器的定義、宣告與使用,序列容器是以線性方式儲存資料,並以指標或索引操作資料,包含向量(vector)、串列(list)與雙向佇列(deque)等類別成員,可單獨操作,或搭配即將於12.3節介紹之演算法使用。,.,10,向量序列容器,向量如同陣列,為一個線性序列記憶體分配方式之類別樣版,但可以不事先宣告記憶體空間大小,為動態記憶體分配方式,資料之增加、刪除與插入等,可以隨機取存。使用時必須引入標頭檔vector,物件變數宣告語法如:,.,11,其中資料型態可以是C+之int,char,float或自行定義之型態等等;物件名稱是儲存容器名稱;大小是容器起始大小;資料為容器起始值。若省略資料項,則只設定容器起始大小,無容器起始值。若省略大小與資料項,則容器起始值均設定為0。vector的疊代器變數宣告語法如下:,.,12,vector成員函數,串列(list)與雙向佇列(deque)等類別成員之定義、宣告與呼叫的方式與向量容器相近,直接將vector改為list或deque,配合範例說明,即可進一步瞭解其異同。,.,13,關聯容器的定義、宣告與使用,關聯容器與序列容器不同,不再以線性方式儲存資料;操作資料時,藉由比對容器中元素之關鍵值(Key)順序來決定,而不再以資料存取之先後或位置為順序,同時亦不允許隨機取存。關聯容器中之各個元素係依關鍵值之順序來排列,如數字大小順序或英文字母順序。關聯容器包含單項集合(set)與多項集合(multiset)、單項對應器(map)與多項對應器(multimap)等類別成員,可單獨操作,或搭配演算法使用。,.,14,單項集合與多項集合,單項集合只存關鍵値,但關鍵値不可重覆,重覆時只存一個;多項集合只存關鍵値,但關鍵値可重覆,重覆時存多項。使用時兩者須引入標頭檔set,物件變數宣告語法:,.,15,其中資料型態可以是C+之int,char,float等等;物件名稱是儲存容器名稱;函數物件可以為less或greater,表示集合中之元素依由小到大排列或由大到小排列,該項省略時,表示由小到大排列。尤其注意函數物件後須空一格空白,否則編譯器會將之視為輸入運算子。set的疊代器變數宣告語法如下:,.,16,表12.2.3-1set成員函數,.,17,單項對應器與多項對應器,單項對應器儲存關鍵値與對應之資料,如整個記錄之欄位所成之集合,但關鍵値不可重覆,重覆時只存一個;多項對應器儲存關鍵値與對應之資料,但關鍵値可重覆,重覆時存多項。使用時兩者須引入標頭檔map,物件變數宣告語法如下:,.,18,其中索引值型態為查詢資料之索引值型態;資料型態可以是C+之int,char,float等等;物件名稱是儲存容器名稱;函數物件可以為less或greater,表示集合中之元素依由小到大排列或由大到小排列,該項省略時,表示由小到大排列。尤其注意函數物件後須空一格空白,否則編譯器會將之視為輸入運算子,使用時必須引入標頭檔map,map疊代器變數宣告語法如下:,.,19,表12.2.3-2map成員函數,.,20,轉換器,標準樣版庫所提供之容器轉換器(ContainerAdaptors)包含堆疊(Stack)、佇列(Queue)與優先權佇列(PriorityQueue),為常見之資料結構。這些資料結構具有相類似的結構與操作方式,但都限制不可以隨機取存,且不允許疊代子操作,如堆疊為先進後出(FirstInLastOut:);佇列為先進先出(FirstInFirstOut);優先權佇列如同排序佇列等。C+中可以直接使用這些轉換器類別,亦可以轉換器為介面,由序列容器輕易轉換而得。,.,21,表12.3-1轉換器與序列容器轉換,.,22,堆疊轉換器使用時須引入標頭檔stack,佇列與優先權佇列轉換器,使用時須引入標頭檔queue。物件變數宣告語法如下:,.,23,資料型態可以是C+之int,char,float等等;物件名稱是儲存容器名稱。轉換容器如表12.3-1所示,省略時即不使用容器轉換,直接使用這些資料結構。而轉換器所提供的成員函數如表12.3-2所示。,表12.3-2轉換器成員函數,.,24,演算法,疊代器是演算法與容器之中介,任何的資料結構只要滿足疊代器的規範,演算法就可以搭配疊代器來操作此資料結構。因此,可依據實際需要,選用一個合適的演算法、容器與疊代器的組合。,.,25,標準樣版庫存有很多且常用現成演算法,詳如表12.4-1所示,主要包含六大類別:(1)修改移除(ModifyingandRemoving):(2)排序(Sorting)(3)比對與搜尋(ComparingandS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 掘进及凿岩机械装配调试工岗前岗中技能考核试卷含答案
- 机制地毯修整工改进测试考核试卷含答案
- 松香蒸馏工岗前技术实务考核试卷含答案
- 测量与控制系统(单元)装调工岗前技术改进考核试卷含答案
- 公厕保洁员操作能力模拟考核试卷含答案
- 供排水泵站运行工安全生产能力模拟考核试卷含答案
- 建筑木雕工改进考核试卷含答案
- 锅炉除灰、脱硫、脱硝设备检修工安全培训水平考核试卷含答案
- 2025河南鹤壁能源化工职业学院下半年招聘高层次人才3人备考题库附答案解析(夺冠)
- 2025福建厦门港务贸易有限公司社会招聘1人备考题库带答案解析
- 河南省青桐鸣大联考2025-2026学年高三11月月考语文试题(含答案)
- 2025安徽合肥水务集团有限公司招聘56人笔试历年参考题库附带答案详解
- 2025年国企招聘考试(文秘)历年参考题库含答案详解(5卷)
- 2025~2026学年天津市滨海新区大港实验中学高一上学期第一次月考数学试卷
- 找准位置精准发力高效突破最后180天!-2025-2026学年高三上学期期中考试家长会
- 初一上英语教学大纲教案资料(2025-2026学年)
- 2025年及未来5年市场数据中国促卵泡激素市场发展现状调查及投资趋势前景分析报告
- 劳动工资统计培训
- 无人机植保服务在现代农业推广分析方案
- 2024年广东省航道事务中心所属事业单位招聘笔试真题
- 企业反腐倡廉培训
评论
0/150
提交评论