實驗八 模板

2021-08-21 00:13:42 字數 3198 閱讀 4505

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

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

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

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

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

//sy8_1.cpp

#include

using

namespace

std;

template

t max(t a,t b)

int max(int a,int b)

int main()

(1)寫出執行結果,分析編譯系統工作過程。程式輸出結果如下:

(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) 說明特定模板函式的作用。

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

#include 

#include

template

class mysort

void dosort(bool up = true)

}else

//降序}}

}}private:

t *stores;

};int main()

; mysort mysort(nums);

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

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

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

printf("\n");

//float

float nums1[10] = ;

mysort mysort1(nums1);

mysort1.dosort(false);

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

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

printf("\n");

// char

char chars[10] = ;

mysort mysort2(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;

vector

vec(a,a+arrsize);

vector

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

if(it==vec.end())

cout

<

cout

<

sort(vec.begin(),vec.end());

for(vector

::iterator it=vec.begin();it!=vec.end();it++)

cout

<

/降序;

sort(vec.begin(),vec.end(),largethan);

for(vector

::iterator it=vec.begin();it!=vec.end();it++)

cout

<

執行結果:

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

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

實驗 八 模板

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

實驗八 模板

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

實驗八 模板

sy8 1.cpp includeusing namespace std template t max t a,t b int max int a,int b int main int max int a,int b float max float a,float b int main char m...