小明是一個很牛逼的程式員,在國際標準化組織作業,
他現在正在設計新一代的C++標準,標準中有一個待實作的函式:findMax(),這個函式要求使用者輸入任何型別的資料,他都能找到最大的一個,
于是他想到了這個:
int findMax(int a,int b){ if(a>b){ return a; } else{ return b; } } char findMax(char a,char b){ if(a>b){ return a; } else{ return b; } }
這種寫法成功的解決了問題,可小明還是不滿意:
1.有太多冗余的代碼,寫出來的頭檔案又大又low,全世界的開發者都要罵娘
2.又太多的資料結構需要兼容,還有世界各地的開發者整出來的奇形怪狀的資料結構,不能滿足標準庫的要求
它更換了一種寫法:
template <class T> T findMax(T a,T b){ if(a>b){ return a; } else{ return b; } }
看起來好奇怪!它能運行嗎?
讓我們測驗一下:
int main(){ cout<<"findMax(1,3):"<<findMax(1,3)<<endl; cout<<"findMax('A','a'):"<<findMax('A','a')<<endl; }

運行的十分正常,這段函式成功了!此時傳入函式的引數,只要能夠用“>”運算子來比較,就能夠運行,比如int型別,函式會回傳大的值,char型別,函式會回傳ASCII碼靠后的值,這稱為泛型編程(Generic Programming),用人話來說就是用相同的方法處理不同的結構,而支撐這個思想的語法就成為模板(template),整個STL標準模板庫就是使用template來實作的,他把教科書上的各種資料結構,比如鏈表啦,佇列啦,堆疊啦,都封裝到一起,供我們調(tou)用(lan),再配合它的algorithm演算法庫,連排序,二分查找都不用自己寫啦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88010.html
標籤:C++
上一篇:【題解】hdu1506 Largest Rectangle in a Histogram
下一篇:TCP學習指北
