版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
9模模群體群體數(shù)據(jù)的組函函數(shù)模類模函數(shù)模函數(shù)模板可以用來創(chuàng)建一個(gè)通用功能的函數(shù),以支持多種不同形參,進(jìn)一步簡(jiǎn)化重函數(shù)模板的定義templatetemplateclass類型名1,class類型名{}對(duì)于功能完全一樣,只是參數(shù)類型不同函數(shù),能寫一段通用代碼適用于多種函數(shù)模注注意參數(shù)化類型,template<classTadd(Tx,T{return}函數(shù)模函數(shù)模板定義后,就可以用它生成各種具體的函數(shù)(稱為模板函數(shù))。在函數(shù)據(jù)實(shí)參實(shí)例化(具體化)成具體類型。這個(gè)過程稱為模板的實(shí)例化。函數(shù)模板函數(shù)名<具體類型名1,具體類型名2函數(shù)名<具體類型名1,具體類型名2,...>(實(shí)參表根據(jù)<>中給出的具體類型,用類似于函數(shù)調(diào)用實(shí)參與形參結(jié)合的方式,將模板參數(shù)表中的參數(shù)化類型一一實(shí)例化成具體的類型,函數(shù)中的參數(shù)化類型也一一使用add<double>(89)將Tadd(TxTy)doubleadd(double,使用sum<int,100將Tsumintsumsize獲得初值隱式實(shí)例化
函數(shù)模使用addA’,‘B將Tadd(Tx,Ty)charadd(char,使用隱式實(shí)例化無法初始化模板參數(shù)表中的普通類型的形參,如果模板數(shù)表中使用普通類型參數(shù),必須使用顯式初始化 *函數(shù)模 usingnamespace
函數(shù)模template<classT1,class8T1add(T1x,T2{return}運(yùn)行結(jié)果運(yùn)行結(jié)果
(4,(8,(4,(8,(1,R(8,}類模板的定templatetemplate模板參數(shù)表>class類名{成員名template為模板關(guān)鍵字(rmr)類型,也稱可變類型,類型名為css(或tm);模板參數(shù)表中的類型也可包含普通類型,普通類型的參數(shù)用來為類的成員提供初值。1類模板的定template<classTNOclassTScoreintnum>TNO,TScoreclass{TNO //TScore //TNO{return}intBelowNum(TScore{return}void{}類模板的定template<classTNO,classTScore,intclass{TNOStudentID[num];TScorescore[num];TNOintBelowNum(TScorevoidtemplate<classTNO,classTScore,intintStudent<TNO,TScore,num>::BelowNum(TScore{return}template<classTNO,classTScore,intnum>voidStudent<TNO,TScore,num>::sort(){}template<classTNO,classTScore,intTNOStudent<TNO,TScore,{return}類模板的實(shí)例類模板實(shí)例化、建立對(duì)象的語法如下類類模板名<模板參數(shù)值表>對(duì)象1,對(duì)象2,…,對(duì)象classStringcharvoid{Student<String,float,100>S1;Student<long,int,50>}
編譯Student<String,float,100>S1;時(shí): 取代TNO 取代 取 2.類模板的實(shí)例template<classTNO,classTScore,intclass{TNOTScorescore[num];TNOintBelowNum(TScorevoid
class{StringfloatStringintBelowNum(floatascore);voidsort();默認(rèn)模板參template<classTNO,classintclass{TNOTScorescore[num];TNOintBelowNum(TScorevoid
TScore,num分別給出默認(rèn)值int,10用以下方式實(shí)例化:Student<char*>class{char*intchar*intBelowNum(intascore);voidsort();線性群非線性群體不用位置順序來標(biāo)識(shí)元線性群體中的元素次序與其位置關(guān)系直接訪問、順序訪問和索。在本章我們只介紹直接訪問和順序問…第一個(gè)元 第二個(gè)元 第三個(gè)元 最后一個(gè)元?jiǎng)討B(tài)數(shù)組類模板:例9-數(shù)組類的拷貝構(gòu)造template<classT>Array<T>::Array(constArray<T>&X){intn=size=alist=newif(alist==NULL)T*srcptr=X.alist;//X.alist是對(duì)象X的數(shù)組首地址T*destptr=alist;//alist是本對(duì)象中的數(shù)組首地址while(n--) //逐個(gè)復(fù)制數(shù)組元素*destptr++=}淺拷template<classT>constArray<T>&X){
A占用的內(nèi) B
Asize=alist=}
void{Array<int>Array<int>
}
AA的數(shù)組元占用的內(nèi)B
A的數(shù)組元占用的內(nèi)拷貝 拷貝template<classArray<T>&Array<T>::operator=(constArray<T>&{intn=rhs.size;if(size!=n) delete[]alist;alist=newT[n];if(alist==NULL)Error(memoryAllocationError);size=n;}T*destptr=alist;T*srcptr=rhs.alist;while(n--)*destptr++=*srcptr++;return*this;}template<classT&Array<T>::operator[](int{if(n<0||n>size-1)返回下標(biāo)為nreturn}為什么有的函數(shù)返回引如果返回值為引用。由于引用是對(duì)象的別,所以通過引用當(dāng)然可以改變對(duì)象的值重載指針轉(zhuǎn)換操作template<classT>Array<T>::operatorT*(void)const{//返回當(dāng)前對(duì)象中私有數(shù)組的首地return}指針轉(zhuǎn)換運(yùn)算符的#include<iostream>usingnamespacestd;voidmain(){intvoidread(int*p,intn);read(a,10);}voidread(int*p,int{for(inti=0;i<n;i++)
void{Array<int>a(10);voidread(int*p,n);read(a,10);}voidread(int*p,int{for(inti=0;i<n;i++)}}Array類的應(yīng)鏈單鏈… 單鏈表的結(jié)點(diǎn)類模template<classT>classNode{Node<T>*next;TNode(constT&item,Node<T>*ptrnext=NULL);voidInsertAfter(Node<T>*p);Node<T>*DeleteAfter(void);Node<T>*NextNode(void)const;在結(jié)點(diǎn)之后插入一個(gè)結(jié) ptemplate<classvoidNode<T>::InsertAfter(Node<T>{p->next=next;next //當(dāng)前節(jié)點(diǎn)的指針域指向}刪除結(jié)點(diǎn)之后的結(jié) rNode<T>{Node<T>*tempPtr=if(next==NULL)returnnext=tempPtr->next;returntempPtr;}鏈表的生成結(jié)插入結(jié)查找結(jié)刪除結(jié)遍歷鏈清空鏈特殊的以訪問的這一端稱棧頂,另一端稱棧底 ┆棧的應(yīng)用舉例——函數(shù)①調(diào)fun(參數(shù)
入 出參當(dāng)前參當(dāng)前現(xiàn)返回地②參當(dāng)前現(xiàn)返回地②參當(dāng)前現(xiàn)返回地⑤⑦出⑦⑥當(dāng)前⑥當(dāng)前現(xiàn)返回地棧的應(yīng)用舉例——表達(dá)式處babad
/+/+
+dc+dc*+棧的基本狀棧棧中沒有元棧棧中元素個(gè)數(shù)達(dá)到上一般狀棧中有元素,但未達(dá)到棧滿狀入 出 入 出數(shù)組下 棧初始狀態(tài)(棧空
數(shù)組下0
棧┆┆┆┆入 出┆┆┆ 棧n10棧滿狀棧的基本操初始入出清空訪問棧頂元檢測(cè)棧的狀態(tài)(滿、空棧的應(yīng)例9.9一個(gè)簡(jiǎn)單的整數(shù)計(jì)算,若要計(jì)算"3+5"則輸入"35+"。乘方運(yùn)算符用
溫馨提示
- 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. 人人文庫(kù)網(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-2030年中國(guó)電影行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)全地形車行業(yè)并購(gòu)重組擴(kuò)張戰(zhàn)略制定與實(shí)施研究報(bào)告
- 新形勢(shì)下文化創(chuàng)意設(shè)計(jì)服務(wù)行業(yè)高速增長(zhǎng)戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)存儲(chǔ)芯片行業(yè)并購(gòu)重組擴(kuò)張戰(zhàn)略制定與實(shí)施研究報(bào)告
- 重癥護(hù)理學(xué)??谱o(hù)士培訓(xùn)基地建設(shè)標(biāo)準(zhǔn)
- 建造師幕墻知識(shí)培訓(xùn)課件
- 項(xiàng)目管理十大知識(shí)領(lǐng)域培訓(xùn)課件
- 2020-2025年中國(guó)基因藥物行業(yè)市場(chǎng)調(diào)研分析及投資戰(zhàn)略規(guī)劃報(bào)告
- 2024年壓電陶瓷行業(yè)市場(chǎng)環(huán)境分析
- 2024年環(huán)境監(jiān)測(cè)系統(tǒng)市場(chǎng)需求分析
- 2025版工業(yè)制造工程墊資建設(shè)合同2篇
- 2025南方財(cái)經(jīng)全媒體集團(tuán)校園招聘63人高頻重點(diǎn)提升(共500題)附帶答案詳解
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之4:4組織環(huán)境-4.2理解相關(guān)方的需求和期望(雷澤佳編制-2025B0)
- 2024年一級(jí)支行行長(zhǎng)競(jìng)聘演講稿例文(4篇)
- 健身房銷售人員培訓(xùn)
- 菌種保存管理
- 四年級(jí)數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)及答案
- 廣東省廣州市2022-2023學(xué)年高二上學(xué)期期末考試化學(xué)試題
- 人教版-六年級(jí)上數(shù)學(xué)-扇形統(tǒng)計(jì)圖單元測(cè)試(含答案)
- 2023年題工會(huì)基礎(chǔ)知識(shí)試題及答案
- 光伏運(yùn)營(yíng)維護(hù)管理方案
評(píng)論
0/150
提交評(píng)論