實驗8 模版

2021-08-20 19:44:21 字數 3035 閱讀 1844

實驗目的和要求

1.能夠使用c++模板機制定義過載函式。

2.能夠例項化及使用模板函式。

3.能夠例項化和使用模板類。

4.應用標準c++模板庫(stl)通用演算法和函式物件實現查詢和排序。

實驗內容

1.分析並除錯下列程式,了解函式模板的使用。

//sy8_1.cpp  

#include

using namespace std;  

template

t max(t a,t b)  

int main()  

執行結果如下:

答:這個程式就是將a和b進行比較,輸出兩個數中大的數,主函式中 cout<

(2)如果定義函式過載,**如下:

int max(int a,int b)

float max(float a,float b)

如果程式中有max('6','5');呼叫時會出現什麼錯誤?為什麼?上機除錯並分析原因。

定義函式過載後程式如下:

#include

using namespace std;    

template

t max(t a,t b)    

int max(int a,int b)    

float max(float a,float b)    

int main()    

執行結果如下:

2.分析除錯下列程式,了解特定模板函式的作用。

//sy8_2.cpp    

#include

using namespace std;    

template

t max(t a,t b)    

char* max(char *a,char *b)    

int main( ) 

(2) 說明特定模板函式的作用。

答:特定模板函式的作用是可以替換原本會自動從函式模板中建立的模板例項,用來替換的函式。

3.宣告乙個類模板,利用它實現10個整數、浮點數和字元的排序。(sy8_3.cpp)

編寫程式如下:

//sy8_3.cpp    

#include

#include

template

class mysort    

void dosort(bool up = true)    

}    

else//降序    

}    

}    

}    

}    

private:    

t *stores;    

};    

int main()    

;    

mysortmysort(nums);    

mysort.dosort(true);//公升序    

for(int i = 0; i < 10; i++)    

printf("%d ", nums[i]);    

printf("\n");    

//float    

float nums1[10] = ;    

mysortmysort1(nums1);    

mysort1.dosort(false);    

for(int i = 0; i < 10; i++)    

printf("%0.2f ", nums1[i]);    

printf("\n");    

// char    

char chars[10] = ;    

mysortmysort2(chars);    

mysort2.dosort();    

for(int i = 0; i < 10; i++)    

printf("%c ", chars[i]);    

printf("\n");    

return 0;    

} 執行結果:

4.宣告乙個整型陣列,使用c++標準模板庫(stl)中的查詢演算法find()進行資料的查詢,然後應用排序演算法sort()對資料進行公升序和降序排序。(sy8_4.cpp)

編寫程式如下:

#include

#include

#include

using namespace std;  

bool  largethan(int x,int y)  

int main()  

;  size_t arrsize=7;  

int searchvalue=5;  

vectorvec(a,a+arrsize);  

vector::iterator it=find(vec.begin(),vec.end(),searchvalue);  

if(it==vec.end())  

cout<

cout<

cout<

執行結果:

分析與討論

1.結合實驗內容中第1題和第2題,說明編譯器匹配函式的過程。

2.結合實驗內容中第3題和第4題,比較利用自定義類模板排序和使用c++標準模板庫排序的過程。

實驗總結:

在本次實驗中我學會了函式模板的過載有多種方式,可以定義同名的函式模板,提供不同的引數和實現,也可以用其他非模板函式過載。要注意的是在編譯的過程中,編譯器不會為沒有用到的任何型別生成相應的模板函式,並且無論為一種型別使用了多少次函式模板,都只為該型別生成乙個模板函式。

模版 實驗一 需求分析

課程 班級學 號 姓 名 實驗時間 軟體工程導論 12電信2 12416430 吳明2013.00.00 軟體工程實驗報告 一 倉儲系統需求分析 完成電子商務環境下倉儲管理系統需求分析,建立需求模型 系統掌握軟體開發過程中需求分析過程,分別對系統進行業務分析 使用者需求分析和系統需求分析。將整個需求...

實驗8 模板

1 理解函式模板 類模板,應用模板函式 模板類。2.實驗內容 1 用函式模板方式設計乙個函式模板sort,採用直接插入排序方式對資料進行排序,並對整數序列和字串行進行排序。template class t void sort t a,int n includeusing namespace std ...

實驗8 模板

實驗目的和要求 1.能夠使用c 模板機制定義過載函式。2.能夠例項化及使用模板函式。3.能夠例項化和使用模板類。4.應用標準c 模板庫 stl 通用演算法和函式物件實現查詢和排序。實驗內容 1.分析並除錯下列程式,了解函式模板的作用。sy8 1.cpp includeusing namespace ...