C 模板 3 模板的特化

2021-08-11 17:00:32 字數 1162 閱讀 6482

c++中,模板的特化可以實現對不同的資料型別進行不同的處理:

比如我們要對int型別的資料用快速排序法進行排序

對float型別的資料用插入排序法進行排序

templatevoid sort(t arg, int size) 

template<> //特化

void sort(int arg, int size)

template<>

void sort(char arg, int size)

int main() ;

int size = 5;

float array_float[5] = ;

char array_char[5] = ;

sort(array_int, size);

sort(array_float, size);

sort(array_char, size);

system("pause");

return 0;

}

輸出結果如下:

int specliazed template

temp speclized use

char speclized template

特化的基本格式如下:

// 乙個通用的排序程式  

template void sort(t arr, int size)

// 模板特化:指定char資料型別的函式

template <>

void sort(char arr, int size)

};template<>

class specialuse

};

使用如下:

specialusecharuse;

specialuseintuse;

輸出結果如下:

general template use

int template use

模板特化的原理:

當編寫了乙個模板類或模板函式時,如果編譯器碰到了乙個新的資料型別或資料型別集合,則編譯器會建立乙個模板類或模板函式的拷貝

模板函式的特化會使編譯器優先檢驗這個型別的模板函式或模板類

C 模板 模板特化 模板偏特化

模板是c 的乙個重要特性 使用模板 可以極大的減少類似功能 的編寫 這可以看做是c 相較於c的進步 因為這一特性在c中是不容易達到的 語言層面不支援 模板的關鍵字是 template 簡單的模板應用 template class test int main 使用模板的類在例項化時需要指明模板引數型別...

c 模板特化

c 模板特化 一 模板特化,specialization of template 模板特化 specialization of template 並不是說例項化乙個模板,如template class stack 宣告stack,這是例項化乙個模板類。類模板特化的意思是,對於某個特定的型別,需要對模...

C 模板特化

對模板特化的理解 特化整體上分為全特化和偏特化,這一點大家都沒有什麼置疑,但是細分它們各包括哪幾種狀態就很難界定了,而且很多權威的書上都不一致,管它呢,反正我們能會用各種特化就可以了。下面就談談我個人對特化的劃分和定義 所謂特化,就是將泛型的東東搞得具體化一些,從字面上來解釋,就是為已有的模板引數進...