C 模板 30 函式模板注意事項和陣列排序練習

2021-10-06 17:39:02 字數 1363 閱讀 7340

前面學習了函式模板,有了乙個基本的了解。我們先來學習函式模板,後面還有乙個類模板。先看看函式模板使用需要注意哪些事項,然後通過乙個陣列排序來練習函式模板。

1.函式模板注意事項

1)自動型別推導,必須推導出一致的資料型別t,才可以使用

2)模板必須要確定t的資料型別,才可以使用

例子

template 返回型別 函式名稱(t a, t b)
第一點,編譯器會進行自動型別推導,但是上面這個t要型別一致才可以,例如兩個引數都是int或者float型別,不可以int a, float b這樣的。

第二點,在函式體內部,這個t必須要利用起來,例如前面兩個數交換,我們函式體內部一行** t temp = a; 這裡t就是在函式內部確定t的資料型別。如果定義要交換函式,裡面沒有用到t,實際上和普通函式一樣,這種情況下,會報錯。

上面關鍵字typename也可以用class代替。有些人習慣typename表示函式模板,用關鍵字class表示是乙個類模板。其實,任何情況下都使用class都可以,看個人習慣。

2.陣列排序練習

需求,給乙個陣列排序,採用快速排序演算法,寫乙個函式模板,支援任何資料型別的陣列排序(大到小排序)。例如用乙個int型別陣列和乙個char型別陣列進行測試排序。

#include using namespace std;

//兩個交換位置的模板函式

template void myswap(t &a, t &b)

template void myprint(t arr, int len)

}template void mysort(t arr, int len)

}if(max != i)

}}void test01()

; int len = sizeof(intarr) / sizeof(int);

mysort(intarr, len);

myprint(intarr, len);

cout << endl;

//char陣列測試

char charr = "adfcgb";

int num = sizeof(charr) / sizeof(char);

mysort(charr, len);

myprint(charr, len);

}int main()

編譯,執行測試

上面寫了三個函式模板,分別是用來交換,列印輸出和排序。通過乙個陣列排序的例子,可以掌握函式模板的基本使用。

C 函式模板詳解及注意事項

c 語言引入模板技術,它使用引數化的型別建立相應的函式和類,分別稱之為函式模板和類模板,本章介紹函式模板 函式模板 可以用來建立乙個通用功能的函式,以支援多種不同形參,進一步簡化過載函式的函式體設計 意義 對於功能完全一樣,只是引數型別不同的函式,能寫一段通用 是用於多種不同的資料型別,會使 的可重...

C 模板使用注意事項

c 模板使用有很多的規則,如果稍有問題便會出問題。由於c 宣告模板和實現模板規則不一樣,很容易出錯,現將遇到的注意事項列出來,當便大家也方便自己以後找錯。1 類的內部區域性模板成員函式不能是虛擬的,virtual這個識別符號。2 宣告了模板類,在實現其介面的時候注意在類網域名稱加上 類名 定義的泛型...

jade模板 注意事項

1.jade模板 語法 doctype html html head body header div 2.新增內容 直接在標籤後邊加空格 直接寫內容 如下 div 我要寫的內容 3.直接在body內新增內容 body 後邊新增 或者 直接 內容 可以替換 多行 html head body.asda...