c 利用模板類實現氣泡排序

2021-08-22 02:36:20 字數 1531 閱讀 5277

模板是一種對型別進行引數化的工具,通常有兩種形式------>函式模板和類模板。

函式模板針對僅引數型別不同的函式;

類模板針對僅資料成員和成員函式型別不同的類。

函式模板的格式:

template 返回型別 函式名(引數列表)

(1)templateclass是關鍵字,class可以用typename關鍵字代替,在這裡typename 和class沒區別。

(2)<>括號中的引數叫模板形參,模板形參和函式形參很相像,模板形參不能為空。一但宣告了模板函式就可以用模板函式的形參名宣告類中的成員變數和成員函式,即可以在該函式中使用內建型別的地方都可以使用模板形參名。模板形參需要呼叫該模板函式時提供的模板實參來初始化模板形參,一旦編譯器確定了實際的模板實參型別就稱例項化了函式模板的乙個例項。

比如swap的模板函式形式為

template

void swap(t &a, t &b)

類模板的格式

templateclass 類名

;

類模板和函式模板都是以template開始後接模板形參列表組成,模板形參不能為空,一但宣告了類模板就可以用類模板的形參名宣告類中的成員變數和成員函式,即可以在類中使用內建型別的地方都可以使用模板形參名來宣告。比如

template

class a ;

在類a中宣告了乙個返回型別為t帶兩個引數型別為t的函式hy

注意的是:

(1)模板函式沒有預設的型別轉換

(2)普通函式與函式模板一同存在,會優先呼叫普通函式

(3)模板的宣告或定義只能在全域性,命名空間或類範圍內進行。即不能在區域性範圍,函式內進行,比如不能在main函式中宣告             或定義乙個模板。

(4)在執行過程中,如果不加顯示呼叫,有時就會編譯出錯

template < typename t >          //函式模板

void print( t x , t y ) //模板函式沒有預設的型別轉換

}template void bubble_sort(t *a,int len) //進行排序

} }}template void print(t *a,int len) //實現陣列內容輸出

利用Python實現氣泡排序

今天說乙個比較簡單易懂的演算法,相信大家在大學裡面肯定都有接觸過。在這裡介紹排序演算法的一種氣泡排序,對於初學python的新人來說因該很容易理解。排序顧名思義,對給定的一串字元 其實也不一定是字元,可以是其他可比較的元素 按照從大到小或者從小到大的順序排列。演算法原理 1.從第一位開始比較相鄰的兩...

利用模板類實現功能

templategenericarray genericarray int length size length count 0 使用模板定義替換genericarray宣告,使用模板成員函式替換genericarray的成員函式。定義乙個空陣列,初始化陣列長度。templatevoid gener...

C 實現氣泡排序

include using namespace std define array size 8 the array size int main cout show the array void myshow int a,int length for unsigned int i 0 i執行結果 演算...